私は現在、2つの異なる形式のコードベース、レガシー、およびアップデートされたバージョンのアプリケーションが必要です。私はこれにFlavorsを使用していますが、2つのアプリアイコンがインストールされている問題にぶち当たっています。その理由は、従来のコードベースと更新されたコードベースの両方に独自のmanifest.xmlがあり、マニフェストの内部には、メインの起動クラスとその相対的なアプリケーションアイコンを識別するための宣言があるからです。Flavorsと複数のマニフェストファイルを使用して複数のアプリアイコンがインストールされています
<!-- 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>
どうすればこの問題を回避できますか?メインコードベースである更新されたコードベースからインテントフィルタを削除すると、Flavorは2つのアイコンをインストールしません。しかし、私はマニフェストのエントリポイントを宣言していないので、メインコードベースを実行することができません。逆に、インテントフィルタをFlavorから削除してメインコードベースに保持すると、Flavorコードは実行されません。 2つのRegistrationActivityクラスは、同じ名前で異なるだけです。レガシーコードは、実際には更新されたコードベースの多くを共有しません。異なるプロジェクトに分かれる以外の提案はありますか?
Flavorsでの設定をgradleで要求しているものもあれば、そのスナップショットもあります。
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
}
あなたを共有することができますgradleファイルも同様ですか? – Ichthyocentaurs