Dans mon build.gradle au niveau de l'application, j'ai les saveurs suivantes:
productFlavors {
originalFlavour{
}
freeFlavour{
}
}
La chose est de construire les deux saveurs, j'obtiens le même nom d'application. Au lieu de cela, j'aimerais avoir des noms d'application différents pour chaque saveur. L'ajout d'un suffixe serait utile. J'espère que quelqu'un pourrait m'aider.
Merci d'avance
MODIFIER :
app/src/main/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>
app/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>
Retirer le app_name
chaîne de votre strings.xml
fichier, vous pouvez alors faire ceci:
productFlavors {
originalFlavour{
resValue "string", "app_name", "Original Flavor Name"
}
freeFlavour{
resValue "string", "app_name", "Free Flavor Name"
}
}
Ensuite, la référence existante à @string/app_name
dans votre manifeste fera référence à une ressource de chaîne générée, qui est basée sur la saveur sélectionnée.
Notez que si vous spécifiez un libellé pour votre activité de lancement (en définissant le Android:label
balise xml dans le <activity>
element), cette valeur sera utilisée dans de nombreux endroits visibles par l'utilisateur plutôt que dans le libellé de votre application. Pour surmonter cela pour votre cas, vous pouvez simplement retirer l'étiquette de votre <activity>
élément tout à fait. Voir https://stackoverflow.com/a/13200774/2911458 pour plus de détails sur cette distinction.
Vous pouvez utiliser une ressource de chaîne dans AndroidManifest.xml:
<application Android:label="@string/app_name">
Ensuite, utilisez des fichiers de ressources de valeurs différentes pour chaque saveur dans le dossier ../ app/src/:
La clé de cette solution est que vous pouvez créer des fichiers strings.xml localisés dans chaque dossier de valeurs pour chaque saveur:/res/values /,/res/values-pt /,/res/values-es /, etc.
Chaque string.xml pourrait avoir le nom de l'application localisé, la valeur par défaut (/ res/values /) pour Free Flavor Name pourrait être:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Free Flavor Name</string>
</resources>
Puisque vous avez déjà un manifeste distinct pour la saveur gratuite, pourquoi ne pas attribuer son étiquette à une valeur de ressource de chaîne différente?
Android:label="@string/free_app_name"