Ich habe eine Anwendung, die nur Dienste, Empfänger und Aktivitäten, die nicht direkt von der Verwendung (es gibt keine Launcher-Aktivität).Bedingte hinzufügen <activity> Tag auf AndroidManifest.xml mit Gradle
Aber jetzt muss ich eine Aktivität hinzufügen, die als Startaktivität verwendet werden soll ABER diese Launcher-Aktivität muss nur vorhanden sein, wenn die App bestimmte Variablen während BUILD gesetzt hat.
Also im Grunde, wenn der gradle Build Aufruf richte ich eine Variable HAS_LAUNCHER=1
und in meinem build.gradle Ich habe so etwas wie:
defaultConfig {
...
def hasLauncher = System.getenv("HAS_LAUNCHER")
if (hasLauncher != null && hasLauncher == "1") {
// Something here to include the activity tag in the AndroidManifest.xml
}
}
Und in meinem AndroidManifest Ich habe den <activity>
Tag, wenn das hinzufügen if
Bedingung erfüllt ist:
<activity
android:name=".LauncherActivity"
android:label="Launcher"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Wie kann ich erreichen, dass ohne eine neue Dimension der produ mit ctFlavors? (die App hat bereits eine Dimension mit 3 Flavors und 2 BuildTypes, also möchte ich nicht noch mehr Ausgaben machen)
eine Sache, die Sie verwenden können, ist das ' enabled 'Attribut des Aktivitäts-Tags – njzk2
"diese Launcher-Aktivität muss vorhanden sein" - was bedeutet "präsent" in diesem Zusammenhang? Meinst du, dass die Aktivität nur in bestimmten Builds aktiviert werden darf? BTW, du scheinst etwas vor deinem '
' zu vermissen. – CommonsWare
@CommonsWare Ja, die Launcher-Aktivität sollte nur in bestimmten Builds in der APK sein, während andere Builds nur die Dienste, Empfänger und andere Aktivitäten haben sollten. (Und ja, ich habe die ASK-Taste aus Versehen gedrückt, aber jetzt habe ich die Frage bearbeitet) –