Название приложения не меняется в лаунчере при использовании вкусов продукта

#android #android-gradle-plugin #android-manifest

#Android #android-gradle-плагин #android-манифест

Вопрос:

Привет, я использую вкусы продукта, чтобы иметь платную и бесплатную версии моего приложения. Мне удалось сделать все, что было необходимо. Однако название приложения в laucher кажется одинаковым для обоих вкусов. Вот как я это делаю.

 productFlavors {
    free {
        applicationId "com.my.app"
        versionCode 11
        versionName "1.11"
        resValue "string", "app_name", "App free"
    }
    pro {
        applicationId "com.my.app.pro"
        versionCode 1
        versionName "1.0"
        resValue "string", "app_name", "App pro"
    }
}
  

Затем в моем файле манифеста у меня есть следующая строка

 android:label="@string/app_name" >
  

Ранее у меня была строка app_name в моем строковом файле ресурсов со значением «App free». Я удалил эту строку из файла и вместо этого добавил строки в блок вкусов продукта, как указано выше.

Проблема в том, что как в платной, так и в бесплатной версии название приложения в лаунчере отображается как «App free», хотя в pro оно должно быть «App pro».

Имя отображается прямо в списке приложений в настройках или во время установки. Не меняется только это имя под значком в лаунчере.

Я попытался перезагрузить свой телефон, но тщетно. Может кто-нибудь, пожалуйста, помогите. Я использую Nexus 5 Android 6. Спасибо!!

Комментарии:

1. На каком лаунчере вы его тестируете?

2. @KamranAhmed По умолчанию

3. Вы пытались присвоить каждому вкусу другой идентификатор приложения?

4. @Christopher Да, извините, это не упомянуто выше, но у обоих разные идентификаторы приложений

5. Можете ли вы проверить объединенные значения.xml-файл? Вы можете найти их там: app/build/intermediates/res/merged/<вкус>/<buildtype>/values/values.xml Отличается ли строка app_name для каждого варианта?

Ответ №1:

Вы можете попробовать запустить следующую команду в своем терминале:

 adb shell am broadcast -a "android.intent.action.PACKAGE_CHANGED" -d "package:com.your.package"
  

Замена com.your.package на имя пакета вашего приложения. Если это не сработает, вы можете попробовать добавить к нему более конкретные детали, как указано здесь, в документации.

Если этот трюк сработает, вы можете отправлять одну и ту же трансляцию всякий раз, когда меняется вкус вашего приложения, чтобы приложения запуска могли знать, когда им нужно обновить данные вашего приложения.

Комментарии:

1. Спасибо за ответ, Камран, проверю это.