J'ai actuellement un projet qui doit contenir deux formes différentes de codebase, hérité et une version mise à jour de l'application. J'utilise Flavours pour cela, mais je rencontre un problème où deux icônes d'applications sont en cours d'installation. La raison en est que la base de code héritée et la base de code mise à jour ont leur propre fichier manifest.xml, et à l'intérieur du manifeste, des déclarations pour identifier la classe de lancement principale et leur icône d'application relative.Plusieurs icônes d'application en cours d'installation lors de l'utilisation de Flavors et de plusieurs fichiers manifest
<!-- legacy code manifest -->
<activity
android:name="legacy.activity.RegistrationActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/CustomAppTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- updated code manifest -->
<activity
android:name="updated.activity.RegistrationActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/CustomAppTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Comment puis-je contourner le problème? Si je supprime le filtre d'intention de la base de code mise à jour, qui est la base de code principale, la saveur n'installera pas deux icônes. Cependant, je ne peux pas exécuter le code principal car je n'ai pas déclaré de point d'entrée dans mon manifeste. Et inversement, si je supprime le filtre d'intention du Flavour et le garde dans mon code principal, le code Flavour ne sera pas exécuté. Les deux classes RegistrationActivity sont différentes, avec le même nom. Le code hérité ne partage pas vraiment une grande partie de la base de code mise à jour. Des suggestions autres que séparer en différents projets?
Certains ont demandé ma configuration avec Flavors dans gradle, voici un instantané de celui-ci.
productFlavors {
standard {
applicationId 'updated.android.example'
manifestPlaceholders = [package_name: "updated.android.example", primary_lang: "en"]
signingConfig signingConfigs.keystore
}
legacyTest {
applicationId 'legacy.android.example.debug'
manifestPlaceholders = [package_name: "legacy.android.example.debug",
target : "Test", primary_lang: "en"]
signingConfig signingConfigs.keystore
}
legacyProd {
applicationId 'legacy.android.example.prod'
manifestPlaceholders = [package_name: "legacy.android.example.prod",
target : "Prod", primary_lang: "en"]
signingConfig signingConfigs.keystore
}
pouvez-vous partager votre fichier gradle aussi bien? – Ichthyocentaurs