【Android】ProductFlaver で起動アクティビティーを代えるに際しやったこと
やりたいこと
2つの productFlavor で起動アクティビティーを代える。
- first -> FirstMainActivity
- second -> SecondMainActivity
なお、first のマニュフェストにおいて LAUNCHER は指定済みの状況下で、second で別のアクティビティーを起動させたい。そのまま second のマニュフェストに SecondMainActivity を LAUNCHER 指定しても、2つ起動してしまう(アイコンが2つできる等)。
失敗した方法
オーバーライドさせたい方のマニュフェストに、
<category android:name="android.intent.category.DEFAULT" />
を入れれば良いみたいな話が stackoverflow にあったけど、うまくいかなかった(以下のリンク)。
エイリアスを作って対応する方法もあるみたいだけど、あんまりシンプルじゃない気がする。
成功した対応
要は、LAUNCHER の指定をしているアクティビティーは1つにしたいので、オーバーライドさせたいマニュフェストでメインの LAUNCHER の指定を削除すればよい。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.yourpackage"> <activity android:name=".FirstMainActivity" android:label="@string/app_name"> <intent-filter tools:node="remove"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".SecondMainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </manifest>
インテントフィルターで tools:node="remove"
をしている。ベストプラクティスかは不明。以下の stackoverflow を参考にした。