Android gradle two different launcher activities for two different product flavors

我与影子孤独终老i 提交于 2019-11-29 06:57:44

You are not installing 2 apps.

Using the paid flavor in your Manifest you will merge 2 Activities with the LAUNCHER category.

 <intent-filter>
            <action android:name="android.intent.action.MAIN" />    
            <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>

In this way you will have 2 icons to launch your app. One for the MainActivity,one for the SecondActivity.

If you want a different Activity for each flavor,you have to use the same Activity in each flavor.

app/src/free/java/..../MainActivity
app/src/paid/java/..../MainActivity

Actually you can do that, with having 2 manifest files and without duplicating the activity:

main/AndroidManifest.xml:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

paid/AndroidManifest.xml:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     package="com.yourpackage">
         <activity
              android:name=".MainActivity"
              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>

meaning that at manifest merge for paid flavor you remove the intent-filter that defines the launcher activity from main and add it to SecondMainActivity.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!