Как изменить имя приложения на тип сборки Gradle

Я пытаюсь найти способ изменить имя приложения приложения для каждого типа сборки в градиенте.

Например, я хотел бы, чтобы версия отладки имела <APP_NAME>-debug а qa-версию имела <APP-NAME>-QA .

Я знаком с:

 debug { applicationIdSuffix '.debug' versionNameSuffix '-DEBUG' } 

Тем не менее, я не могу найти команду gradle, чтобы применить изменение приложения, когда оно находится в панели запуска.

Solutions Collecting From Web of "Как изменить имя приложения на тип сборки Gradle"

Если по названию «app» вы имеете в виду android:label в <application> , самым простым решением является наличие этой точки в строковом ресурсе (например, android:label="@string/app_name" ), а затем другая версия Этот строковый ресурс в src/debug/ sourceset.

Вы можете видеть, что в этом примере проекта , где у меня есть замена для app_name в src/debug/res/values/strings.xml , который будет применяться для debug сборников. release сборки будут использовать версию app_name в src/main/ .

Вы можете использовать что-то вроде этого

  buildTypes { debug { applicationIdSuffix '.debug' versionNameSuffix '-DEBUG' resValue "string", "app_name", "AppName debug" } release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release zipAlignEnabled true resValue "string", "app_name", "AppName" } } 

Вы можете использовать @ string / app_name в файлах AndroidManifest.xml.

Удостоверьтесь, что вы удаляете имя_пользователя из значений / папки (нет записи по этому имени).

Вы можете сделать это с помощью градиента:

 android { buildTypes { release { manifestPlaceholders = [appName: "My Standard App Name"] } debug { manifestPlaceholders = [appName: "Debug"] } } } 

Затем в вашем AndroidManifest.xml поставьте:

 <application android:label="${appName}"/> <activity android:label="${appName}"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

Примечание: он также работает с productFlavors .

Имя приложения видимо для пользователя, поэтому Google рекомендует хранить его в файле strings.xml. Вы можете определить отдельный файл строковых ресурсов, содержащий строки, специфичные для ваших типов buildTypes. Похоже, у вас может быть пользовательский qa buildType. Если это не так, игнорируйте часть qa ниже.

 └── src ├── debug │  └── res │  └── buildtype_strings.xml ├── release │  └── res │  └── buildtype_strings.xml └── qa  └── res  └── buildtype_strings.xml 

Для более динамичного решения на основе градиента (например, установите базовое имя приложения в main's strings.xml один раз и избегайте повторения себя в strings.xml комбинации типов / типа), см. Мой ответ здесь: https://stackoverflow.com/ а / 32220436/1128600

Для поддержки переводов выполните следующие действия:

1. удалить строку "app_name"

2. добавить к граде

  buildTypes { admin { resValue "string", "app_name", "@string/app_name_admin" } release { resValue "string", "app_name", "@string/app_name_release" } debug { resValue "string", "app_name", "@string/app_name_debug" } } 

3. Задайте имя приложения в манифесте как «@ string / app_name»

4. Добавить в значения strings.xml

 <string name="app_name_admin">App Admin</string> <string name="app_name_release">App release</string> <string name="app_name_debug">App debug</string> 

Нам нужно решение для поддержки имени приложения с локализацией (для нескольких языков). Я протестировал с помощью решения @Nick Unuchek, но здание потерпело неудачу (не найдено @ string /). Немного изменить, чтобы исправить эту ошибку: 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 ] } } 

значения \ strings.xml:

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

Значения-ан \ 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>