如何在Android studio中使用具有不同应用名称的风味?

时间:2015-02-11 22:30:48

标签: android android-studio android-gradle build.gradle android-productflavors

在我的app-level build.gradle中,我有以下几种风格:

productFlavors {
    originalFlavour{
    }

    freeFlavour{
    }
}

正在构建两种口味我得到了相同的App Name。相反,我希望每种口味都有不同的应用程序名称。只需添加后缀即可。希望有人能帮助我。

提前致谢

编辑

应用程序/ SRC /主/ AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="z.fncapps.etsiipod"  >

    <uses-permission
        android:name="android.permission.CALL_PHONE"
        android:required="false" />

    <uses-feature
        android:name="android.hardware.telephony"
        android:required="false"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <!-- actvities declared here -->
    </application>
</manifest>

应用程序/ SRC / freeFlavour / AndroidManifest.xml中

<uses-permission 
    android:name="android.permission.CALL_PHONE"
    android:required="false" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-feature
   android:name="android.hardware.telephony"
   android:required="false" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <!-- actvities declared here -->
</application>

3 个答案:

答案 0 :(得分:68)

从现有的app_name文件中删除strings.xml字符串,然后就可以执行此操作:

productFlavors {
    originalFlavour{
        resValue "string", "app_name", "Original Flavor Name"
    }

    freeFlavour{
        resValue "string", "app_name", "Free Flavor Name"
    }
}

然后,清单中对@string/app_name的现有引用将引用生成的字符串资源,该资源基于所选的风格。

请注意,如果您为启动活动指定了标签(通过在android:label元素中定义<activity> xml标记),该值将用于许多用户可见的位置,而不是您的应用程序的标签。要解决此问题,您只需从<activity>元素中删除标签即可。有关此区别的详细信息,请参阅https://stackoverflow.com/a/13200774/2911458

答案 1 :(得分:22)

您可以在AndroidManifest.xml中使用字符串资源:

<application android:label="@string/app_name">

然后在 ../ app / src / 文件夹中为每种风格使用不同的值资源文件:

../app/src/

此解决方案的关键是您可以在每个值文件夹中为每种风格创建本地化的strings.xml文件:/ res / values /,/ res / values-pt /,/ res / values-es /等。

每个 string.xml 都可以将应用名称本地化,免费风味名称的默认值(/ res / values /)可以是:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Free Flavor Name</string>
</resources>

答案 2 :(得分:1)

由于您已经有免费风味的单独清单,为什么不将其标签分配给不同的字符串资源值?

android:label="@string/free_app_name"