Flavor AndroidManifest.xml与主AndroidManifest.xml冲突,安装时没有图标

时间:2017-03-02 20:40:22

标签: android android-manifest intentfilter

我有一种风味和主代码库。我可以切换到风味并运行项目,我可以切换回主代码库并运行项目,但这些项目都不会显示图标。我不知道为什么,我唯一的假设是我的声明和添加到intent-filer的属性出了问题

Flavor AndroidManifest.xml

<application
    android:name="com.example.flavor.application.MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/CustomAppTheme"
    tools:replace="android:name">

    <!-- main launcher Activity -->
    <activity
        android:name="com.example.flavor.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="com.example.flavor.activity.RegistrationActivity"/>
            <action android:name="android.intent.action.MAIN"/>
            <action android:name="android.intent.action.VIEW"/>

            <category android:name="android.intent.category.LAUNCHER"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>

        </intent-filter>
    </activity>

</application>

主AndroidManifest.xml

<application
    android:name="com.example.application.MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/CustomAppTheme"
    tools:replace="android:name">

    <!-- main launcher Activity -->
    <activity
        android:name="com.example.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="com.example.activity.RegistrationActivity"/>
            <action android:name="android.intent.action.MAIN"/>
            <action android:name="android.intent.action.VIEW"/>

            <category android:name="android.intent.category.LAUNCHER"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>

        </intent-filter>
    </activity>

</application>

我的构建gradle设置如下

productFlavors {
    standard {
        applicationId 'com.example'
        manifestPlaceholders = [package_name: "com.example", primary_lang: "en"]
        signingConfig signingConfigs.keystore
    }
    legacyTest {
        applicationId 'com.example.flavor.test'
        manifestPlaceholders = [package_name: "com.example.flavor.test",
                                target      : "Test", primary_lang: "en"]
        signingConfig signingConfigs.keystore
    }
}

对于Flavor和主代码库,RegistrationActivity类是不同的。没有压倒一切,我相信,因为我使用的是不同的包,所以它们实际上是作为我想要的不同类。但我的问题是,如何与Manifest合并我不能有单独的应用程序图标,我的味道图标和我的主要应用程序图标?什么都没有显示出来。提前致谢

1 个答案:

答案 0 :(得分:0)

好的,这就是我设置意图过滤器的方式。我必须在以下结构中将它们分开

Flavor AndroidManifest.xml

<intent-filter>
            android:name="com.example.flavor.activity.RegistrationActivity"
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>

            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
        </intent-filter>

主AndroidManifest.xml

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

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>

            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
        </intent-filter>

我不明白为什么这种格式有效的技术原因,但是将所有内容分组到一个intent-filter下会导致问题,例如运行时出错或没有app图标。干杯