Gradle “manifeste nécessite un espace réservé à la substitution d'erreur” mais manifestPlaceholders de fournitures d'une valeur
Je suis en train de faire la substitution à l'intérieur de la AndroidManifest.xml fichier à partir de la génération.gradle android extension, mais je reçois ce message d'erreur:
AndroidManifest.xml:89:16 Error:
Attribute uses-library#com.company.platform.${encoding}@name at AndroidManifest.xml:89:16 requires a placeholder substitution but no value for <encoding> is provided.
/Users/Company/Desktop/Checkout/android/Project/app/src/main/AndroidManifest.xml:0:0 Error:
Validation failed, exiting
:app:processDebugManifest FAILED
C'est un extrait du fichier manifeste:
...
</receiver>
<uses-library android:name="com.company.platform.${encoding}" />
</application>
...
Et c'est une aide de l'extrait de la compilation.gradle:
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.company.app"
minSdkVersion 23
targetSdkVersion 23
versionName cityVersion
setProperty("archivesBaseName", "City_$versionName")
manifestPlaceholders = [encoding: "some value"]
manifestPlaceholders = [version: cityVersion]
}
J'ai aussi essayé d'ajouter le manifestPlaceholders dans le buildTypes c'est à dire
buildTypes {
release {
minifyEnabled true
shrinkResources true
manifestPlaceholders = [encoding: deviceEncoding]
manifestPlaceholders = [version: cityIDVersion]
}
debug {
manifestPlaceholders = [encoding: deviceEncoding]
manifestPlaceholders = [version: cityIDVersion]
}
}
Mais j'obtiens toujours la même erreur.
Pourquoi il y a une erreur à ce sujet nécessitant un espace réservé de substitution lorsque l'on est dans le manifestPlaceholders?
Vous devez vous connecter pour publier un commentaire.
Vous suffit d'ajouter à l'éventail. Vous êtes à la remplacer. Ce faire:
En déclarant manifestPlaceholders deux fois pour la même saveur/type de construction, vous êtes en remplacement de la précédente. Après que le précédent a remplacé, votre build a échoué parce que la propriété n'existe plus.
Vous devez ajouter l'identificateur applicationid espace réservé à l'application gradle. Ce qui se passe avec l'intégration de Firebase, après la mise à jour de Gradle 2.2.0-alpha1
Voir: Impossible d'obtenir fournisseur de com.google.firebase.fournisseur de.FirebaseInitProvider
J'avais quitté le ${} symboles autour de ma valeur:
Pour ceux d'entre vous en cours d'exécution dans le manifeste de fusion /manifeste d'injection des questions de
manifestPlaceholders
défini dans vos bibliothèques manifeste, le problème vient du fait que vous avez besoin de définir une valeur pour lemanifestPlaceholders
dans vos bibliothèques manifeste. Cette valeur n'est pas remplacée lorsque vous injectez votre valeur réelle de la demande de consommation. Pour contourner ce problème, vous devez définir cesmanifestPlaceholders
valeurs pourdebug
construit dans votre bibliothèque.Comme suit:
En faisant cela, vous serez en mesure de construire votre bibliothèque. Tout en laissant le client demande de fournir les valeurs correctes pour le
manifestPlaceholders
. En permettant à votre bibliothèque à faire tout le levage lourd il se doit. Cela est possible parce que les bibliothèques de construire release (sauf disposition contraire).Client app
build.gradle
exemple: