在Android Nougat(7)中有解释android:label的变化吗?

时间:2016-09-22 06:27:25

标签: android android-7.0-nougat

我已经在gradle中的每个构建类型中添加了applicationIdSuffix,以便能够同时在同一个设备上安装每个构建类型。我还为每种构建类型都有不同的字符串资源,这意味着我可以为每种构建类型(例如,我的应用程序,我的应用程序(测试版),我的应用程序(调试))提供唯一的字符串资源"app_name"。我使用android:label="app_name"上的<application> AndroidManifest.xml元素,android:label="app_title"上的<activity>android:label="app_name"元素上的<intent-filter>,这给了我一个完美的设置:在启动器中,每个构建类型都有其唯一的启动器名称,但工具栏中的标题是相同的(没有app_title的唯一资源)。

但是在Android Nougat手机(和模拟器)上运行具有多种构建类型的相同应用程序会为med提供相同的启动器名称。我可以同时安装,但应用程序启动器标题是相同的......任何想法如何在Nougat设备上解决这个问题?它适用于棉花糖及以下。

更新1: 无法让它发挥作用。让我分享一些代码:

<application
        ...
        android:label="@string/launcher_name">
        <a... android:name=".MainActivity"
            android:label="@string/app_name">
            <i...
                android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </i...>
        </a...>
</app...>

/debug/res/values/strings.xml包含launcher_name =“我的应用-D” 但是在emu上运行AS时,启动器标签是我的应用程序。

更新2: 在Android.com上提交了一个错误。 http://code.google.com/p/android/issues/detail?id=223706

BR, Ĵ

1 个答案:

答案 0 :(得分:0)

好的,我只是自己测试过,无法重现问题。我的建议是检查资源字符串的放置方式。如果您希望每个构建类型的应用程序名称不同,请确保将该资源放在每个不同的构建中,而不是main/res/文件夹中。

我创建了一个labels.xml,其中添加了<string name="app_name">My App (X)</string>,其中X是releasedebugbeta,具体取决于构建类型。这适用于我能够测试的所有Android版本。

请确保您在主文件夹中没有字符串资源。虽然,这会导致由于重复资源导致的构建错误。