2017-01-27 3 views
0

Ich habe 2 Apps mit den gleichen Bildern und Ressourcen außer der AppIcon. Eine gängige Lösung hierfür ist, dass Sie für jede App einen separaten Ordner unter src einrichten und Gradle so konfigurieren, dass der entsprechende Ordner verwendet wird.Build-Varianten und verschiedene AppIcons

In meinem Fall werden 99% der Ressourcen von beiden Apps verwendet, aber nur das Appicon ist anders.

Muss ich immer noch den Mechanismus der verschiedenen Res-Ordner verwenden oder gibt es auch einen einfacheren Weg, damit ich nicht alle Ressourcen klonen muss?

Ich dachte, ich etwas tun könnte: ich einen AndroidManifest Eintrag wie folgt haben:

<application android:name="bla.bla.MyApplication" android:largeHeap="true" android:icon="@drawable/icon" android:label="@string/app_name"> 

ich den Namen in gradle überschreiben können wie folgt, der gut arbeitet:

demo { 
    resValue "string", "app_name", "This is the Demo" 
    resValue "drawable", "icon", "demoicon" 
} 

Gibt es eine Möglichkeit, den Iconnamen auf die gleiche Weise zu überschreiben?

Wie Sie im Schnipsel oben sehen können, habe ich bereits versucht, aber ich bekomme einen Duplicate Resources Fehler, weil mein Demoicon gespeichert unter Res/Drawable automatisch generiert wird.

Antwort

0

Wenn Ihre Aromen wie Produktion nennen dann:

android.sourceSets.production 
{ 
    res.srcDirs = ['res', '/path/to/production/res/dir'] 
} 

Und dann in Ihrem/path/to/Produktion/res/dir/drawable- * würden Sie Ihren Launcher-Symbol haben.

+0

Aber dann Ich muss die lochres Ressourcen vom Testordner zum Produktionsordner clonen und ich werde Ordner mit vielen Ressourcen doppelt haben, oder? Ich möchte alle anderen Sachen außer dem Symbol teilen. –

0

es die folgende Art und Weise Isolved:

ich nicht die res Ordner für verschiedene Build-Typen klonen wollte, nur das App-Symbol zu ändern.

Es kann mit manifestPlaceholders erfolgen:

In meinem build.gradle:

buildTypes { 
demo { 

      manifestPlaceholders = [iconpath:"@drawable/icon_timeline_test"] 
     } 

es das Symbol in der AndroidManifest ersetzen wird, wenn wie folgt verwiesen:

android:icon="${iconpath}" 
Verwandte Themen