2016-12-19 2 views
1

Ich möchte verschiedene Bilder je nach Produkt Geschmack haben und wenn es debuggen oder release, was ist die ordnungsgemäße Einrichtung des Res-Ordner, um dies zu erreichen?Wie richte ich Gradle für verschiedene Produktaromen und verschiedene Icons ein, je nach Release/Debug?

In meinem build.gradle:

productFlavors { 
    flavor1 { 
     applicationId "com.myapp.flavor1" 
    } 
    flavor2 { 
     applicationId "com.myapp.flavor2" 
    } 
} 

buildTypes { 
    debug { 
     applicationIdSuffix '.debug' 
     useProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    release { 
     minifyEnabled true 
     shrinkResources true 
     useProguard true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

In meinem Ordner strucure habe ich jetzt:

src/flavor1/res 
    /flavor2/res 
    /main/res 
    /debug/res 

Ich habe in meinem Debug-Ordner flavor1 und flavor2 als Unterordner mit Ressourcen versucht zu haben, aber das trifft nicht zu. Nur ein res-Ordner in debug führt zu den gleichen Assets für beide Varianten, während ich möchte, dass sie anders sind. Wie richte ich das Projekt so ein, dass ich je nach Debug/Release und den verschiedenen Produktvarianten unterschiedliche Bilder habe?

EDIT:

aktualisiert Ordnerstruktur

+0

Sie haben eine res Ordner in jedem dieser Ordner, um die spezifischen Ressourcen enthalten – akash93

+0

Ja, ich hab es. Aber je nach Debug/Release bekomme ich keine anderen Ressourcen. Also ich möchte 4 verschiedene Bilder Ressourcen haben; flavour1/debug, flavour1/release, flavour2/debug, flavour2/release. – peuhse

Antwort

0

Dies ist eigentlich einfacher als Sie vielleicht denken.

Sie haben zur Zeit:

src/flavor1/res 
    /flavor2/res 
    /main/res 
    /debug/res 

Fügen Sie einfach:

src/flavor1Debug/res 
    /flavor1Release/res 
    /flavor2Debug/res 
    /flavor2Release/res 

Ressourcen dort werden diejenigen in den weniger spezifischen Ordner außer Kraft setzen.

Die Benutzeroberfläche "Build Variants" in Android Studio ist hilfreich, um die endgültigen Möglichkeiten zu bestätigen.

Ich benutze dieses Muster selbst für Google Maps API-Schlüssel, die in meinem Fall je nach Kunde unterschiedlich sein müssen (Flavour) und sich aufgrund des Unterschieds beim App-Signing bereits zwischen Release und Debug unterscheiden.

+0

Danke, beide Lösungen funktionieren. Vielen Dank! – peuhse

0

sollten Sie versuchen, diese

productFlavors { 
      flavor1 { 
        applicationId "com.myapp.flavor1" 
        } 
      flavor2 { 
        applicationId "com.myapp.flavor2" 
        } 
      } 

      sourceSets.flavor1 { 
       res { 
        srcDir 'flavor1' 
       } 
       resources { 
        srcDir 'flavor1' 
       } 
      } 

      sourceSets.flavor2 { 
       res { 
        srcDir 'flavor2' 
       } 
       resources { 
        srcDir 'flavor2' 
       } 
      } 
    } 
+0

Die verschiedenen Ressourcen funktionieren für die Veröffentlichung (d. H. Src/flavour1, src/flavour2), aber nicht für das Debuggen. Ich sehe nicht, warum Ihre Lösung das beheben würde? – peuhse

1

Von android build variants docs,

Gradle erstellt automatisch Varianten sie product-flavor Build-Type nach

in Ihrem Fall bereits Sie haben 4 Varianten So basierend auf Buildtypen und Produkt Aromen und Namen bauen. Und wenn Sie verschiedene Quellsätze für sie wollen, können Sie sie haben wie folgt src/flavor1Debug src/flavor2Release und so weiter .. Beachten Sie die Namenskonvention

+0

Danke, beide Lösungen funktionieren. Vielen Dank! – peuhse

Verwandte Themen