Ich habe eine App mit mehreren Build-Varianten. Die Varianten werden verwendet, um Versionen derselben App für verschiedene Unternehmen zu erstellen. Also, ich habe verschiedene Varianten, die unterschiedliche Anwendungen bauen:Wie ändere ich die AndroidManifest.xml-Datei basierend auf Build-Varianten?
- com.acme.app1
- com.schmoe.app2
- com.yop.app3
- etc ...
Die build.gradle Datei-Handles das sehr gut:
productFlavors {
app1 {
applicationId "com.acme.app1"
}
app2 {
applicationId "com.schmoe.app2"
}
app3 {
applicationId "com.yop.app3"
}
}
Hier mein pro bluten. Ich integriere Dropbox in meine Apps. Die Datei AndroidManifest.xml muss für jede Variante so geändert werden, dass sie den entsprechenden Anwendungsschlüssel enthält (der in meiner Zeichenfolgendatei gespeichert ist). Dropbox hat folgende neben der Manifest-Datei:
<activity
android:name="com.dropbox.client2.android.AuthActivity"
android:launchMode="singleTask"
android:configChanges="orientation|keyboard">
<intent-filter>
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-abcdef" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Jede Build-Variante muss die folgende Zeile ändern:
<data android:scheme="db-abcdef" />
auf den entsprechenden Wert für jede App-Variante. Mit anderen Worten, ich muss einen Teil der obigen Zeichenfolge basierend auf der Build-Variante ersetzen. Zum Beispiel
App1
<data android:scheme="db-111111" />
App2
<data android:scheme="db-222222" />
Anw3
<data android:scheme="db-333333" />
Die Linie ist für jede Variante bis zu dem Text "db-".
Was ich brauche ist, den variablen Teil der Zeichenfolge (die x-Werte) "db-xxxxxx" durch eine Zeichenfolge aus meiner Zeichenfolgedatei dynamisch zu ersetzen.
Ich denke, dass dies mit Gradle Skripten getan werden kann, aber ich bin ein komplettes Newb mit Gradle. HILFE!
Wenn Sie helfen können, bitte seien Sie sehr spezifisch über das, was wo geht, seit ich bei GRADLE-Dateien und Skripten sinke. Danke im Voraus!
Gibt es einen Weg, um die Saiten zu verketten? Der String in der String-Datei ist nur der Teil nach db-. Übersetzt: Nehmen wir an, der App-Schlüssel ist 123456. Der String-Eintrag ist "123456". Ich muss das mit "db-" verketten und "db-123456" machen. Offensichtlich konnte ich es mit db- speichern und dann vor dem Aufruf der API analysieren, aber ich war nur neugierig. – JustLearningAgain
Ich habe ein Problem. Die in meiner App geladene Zeichenfolge lädt den richtigen Schlüssel. Aber der Schlüssel, der in der Manifestdatei geladen wird, lädt die Zeichenfolge aus der Hauptvariante und NICHT die Variante, die ich kompiliere. Gibt es eine Möglichkeit, das Manifest anzuweisen, die richtige Varianten-String-Datei zu laden? – JustLearningAgain