How to change app name per Gradle build type

前端 未结 10 847
慢半拍i
慢半拍i 2020-11-29 20:09

I am trying to figure out a way to be able to change my application\'s app name per build type in gradle.

For instance, I would like the debug version to have

相关标签:
10条回答
  • 2020-11-29 20:39

    As author asks to do this in Gradle, we can assume he want to do it in the script and not in the configuration files. Since both Android Studio and Gradle has been heavily updated and modified in the last year (~2018) all other answers above, seem overly contorted. The easy-peasy way, is to add the following to your app/build.gradle:

    android {
        ...
        buildTypes {
            ...
            // Rename/Set default APK name prefix (app*.apk --> AwesomeApp*.apk)
            android.applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    def appName = "AwesomeApp"
                    outputFileName = appName+"-${output.baseName}-${variant.versionName}.apk"
            }
        }
    }
    
    0 讨论(0)
  • 2020-11-29 20:41

    We need a solution to support app name with localization (for multi language). I have tested with @Nick Unuchek solution, but building is failed (not found @string/) . a little bit change to fix this bug: build.gradle file:

    android {
        ext{
            APP_NAME = "@string/app_name_default"
            APP_NAME_DEV = "@string/app_name_dev"
        }
    
        productFlavors{
    
            prod{
                manifestPlaceholders = [ applicationLabel: APP_NAME]
            }
    
            dev{
                manifestPlaceholders = [ applicationLabel: APP_NAME_DEV ]
            }
    
        }
    

    values\strings.xml:

    <resources>
        <string name="app_name_default">AAA prod</string>
        <string name="app_name_dev">AAA dev</string>
    
    </resources>
    

    values-en\strings.xml:

    <resources>
        <string name="app_name_default">AAA prod en</string>
        <string name="app_name_dev">AAA dev en</string>
    
    </resources>
    

    Manifest.xml:

    <application
        android:label="${applicationLabel}" >
    </application>
    
    0 讨论(0)
  • 2020-11-29 20:43

    For a more dynamic gradle based solution (e.g. set a base Application name in main's strings.xml once, and avoid repeating yourself in each flavor / build type combination's strings.xml), see my answer here: https://stackoverflow.com/a/32220436/1128600

    0 讨论(0)
  • 2020-11-29 20:44

    The app name is user-visible, and that's why Google encourages you to keep it in your strings.xml file. You can define a separate string resource file that contains strings that are specific to your buildTypes. It sounds like you might have a custom qa buildType. If that's not true, ignore the qa part below.

    └── src
        ├── debug
        │   └── res
        │       └── buildtype_strings.xml
        ├── release
        │   └── res
        │       └── buildtype_strings.xml
        └── qa
            └── res
                └── buildtype_strings.xml
    
    0 讨论(0)
提交回复
热议问题