Depuis : https://firebase.google.com/support/releases le 20 mars.
Erreur
AndroidRuntime : java.lang.NoSuchMethodError : aucune méthode statique zza(Ljava/lang/Object ;Ljava/lang/Object ;)Ljava/lang/Object ; en classe Lcom/google/android/gms/common/internal/zzbq ; ou ses super classes (déclaration de 'com.google.android.gms.common.internal.zzbq'
c'est un problème critique.
Salut, j'ai une autre erreur due à la même mise à jour de firebase. Quand je tape :
cordova build android
dans la console, j'obtiens cette sortie:
ÉCHEC DE CONSTRUCTION
Durée totale : 4,529 secondes
ÉCHEC : la génération a échoué avec une exception.
J'ai cherché la réponse sur le Web mais les solutions que j'ai trouvées ( solution1 , solution2 , solution3 ) ne fonctionnent pas pour moi .
L'erreur semble être due à la mise à jour des services Play . Je ne peux pas créer mon application Android tant que je n'ai pas supprimé ce plugin.
J'espère que ce problème critique pourra être résolu pour réinstaller le plugin.
il existe une solution temporaire à cela, forcez les services et les versions de firebase à 11.8.0.
comment:
mettre ceci à l'intérieur du
<hook src="fixFirebasePlugin.js" type="before_build" />
créez le fichier JS à la racine de votre projet :
module.exports = function(context) {
var fs = require('fs');
var path = require('path');
var rootdir = context.opts.projectRoot;
var platformDir = 'platforms/android';
//change the path to your external gradle file
var srcFile = path.join(rootdir, 'src/android/build-extras.gradle');
var destFile = path.join(rootdir, platformDir, 'build-extras.gradle');
console.log("copying "+srcFile+" to "+destFile);
fs.createReadStream(srcFile).pipe(fs.createWriteStream(destFile));
}
créez dans le dossier src un fodler android et créez à l'intérieur un fichier appelé build-extras.gradle avec le contenu :
configurations.all {
resolutionStrategy {
force "com.google.android.gms:play-services-ads:11.8.0"
force "com.google.android.gms:play-services-base:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
force "com.google.android.gms:play-services-basement:11.8.0"
force "com.google.android.gms:play-services-tagmanager:11.8.0"
force 'com.google.firebase:firebase-core:11.8.0'
force 'com.google.firebase:firebase-crash:11.8.0'
force 'com.google.firebase:firebase-auth:11.8.0'
force 'com.google.firebase:firebase-common:11.8.0'
force 'com.google.firebase:firebase-config:11.8.0'
force 'com.google.firebase:firebase-messaging:11.8.0'
}
}
supprimez et réajoutez la plate-forme (testée sur 6.3.0), effectuez un android de construction cordova, et c'est corrigé.
après cela, un run/build --prod, ce que vous voulez.
@tryadelion , j'ai essayé votre solution exactement comme vous l'avez mentionné, mais j'ai eu la même erreur dans la console :(
avez-vous supprimé la plate-forme, relu en tant qu'[email protected] et effectué un "~: cordova build android", pas de prod, pas de course, pas d'ionique ? c'est ce qui a fait l'affaire pour moi !
Oui, j'ai tout fait (config.xml, fixFirebasePlugin.js, build-extras.gradle, platform [email protected]), mais chaque commande run ou build que j'exécute produit le même résultat :
Mon projet n'est pas ionique, je ne sais pas si cela pourrait être important pour cette question.
avez-vous essayé un "correctif" antérieur à cela ? comme changer manuellement les versions sur le XML du plugin ? J'ai dû le supprimer et le lire parce que je me suis trompé avec ses fichiers. il a fonctionné jusqu'à présent sur 3 projets différents, tous ioniques cependant, mais le système de crochet est le même car il est alimenté en cordova.
Avant cela, j'ai seulement modifié /platforms/android/project.properties et /platforms/android/build.gradle mais après cela j'ai supprimé et rajouté le plugin (premier) et la plateforme [email protected]. (après).
Je ne sais pas quelle pourrait être la raison de l'échec, mais je pense que mon projet a toujours les deux versions : 12.0 et 11.8.0 car dans la console je vois ceci :
Je ne sais pas où pourrait être spécifié la version 12.0.0.
supprimez les modules de nœuds, supprimez les plates-formes/android, supprimez tous les plug-ins utilisant des services dans /plugins, NPM i, lisez tous les plug-ins que vous avez supprimés, ajoutez la plate-forme Android et réessayez. c'est ce que je ferais.
Ok, je vais essayer de réinstaller tous les composants que j'ai. Merci beaucoup pour votre aide!!
@tryadelion Merci pour le partage. J'étais sur le point de forker les versions cordova-plugin-firebase et force. Quoi qu'il en soit, j'ai mis en œuvre votre solution.
Nous travaillons avec [email protected] qui fonctionne également.
Enfin je résous le problème en modifiant le fichier /platforms/android/build.gradle de cette façon :
allprojects {
repositories {
// Temp fix for com.google.android.gms.license
// Added from here
configurations.all {
resolutionStrategy {
// Put your gms packages here with 11.8.0 attached
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-auth:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
}
}
// until here
jcenter()
maven {
url "https://maven.google.com"
}
}
}
(Solution lue sur https://github.com/facebook/react-native/issues/18479)
Merci encore!
Pour Ionic v1.1.0
et cordova-plugin-firebase v0.1.25
ce crochet a résolu mon problème :
//before_build/010_add_gradle_extras.js
#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var rootdir = process.argv[2];
var platformDir = 'platforms/android';
var srcfile = path.join(rootdir, 'build-extras.gradle');
var destfile = path.join(rootdir, platformDir, 'build-extras.gradle');
var destdir = path.dirname(destfile);
if (fs.existsSync(srcfile) && fs.existsSync(destdir)) {
fs.createReadStream(srcfile).pipe(fs.createWriteStream(destfile));
process.stdout.write('Hook: build-extras.gradle added');
}
//build-extras.gradle
configurations.all {
resolutionStrategy {
force "com.google.android.gms:play-services-ads:11.8.0"
force "com.google.android.gms:play-services-base:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
force "com.google.android.gms:play-services-basement:11.8.0"
force "com.google.android.gms:play-services-tagmanager:11.8.0"
force 'com.google.firebase:firebase-core:11.8.0'
force 'com.google.firebase:firebase-crash:11.8.0'
force 'com.google.firebase:firebase-auth:11.8.0'
force 'com.google.firebase:firebase-common:11.8.0'
force 'com.google.firebase:firebase-config:11.8.0'
force 'com.google.firebase:firebase-messaging:11.8.0'
}
}
Supprimer et ajouter une nouvelle plate-forme Android était également un facteur clé.
@tryadelion ,
A problem occurred configuring root project 'android'.
> Could not resolve all dependencies for configuration ':_debugApkCopy'.
> Could not find com.google.gms:google-services:11.8.0.
Required by:
project :
J'ai fait ce que jotefer a dit et cela fait fonctionner la construction. Cependant, la configuration à distance a cessé de fonctionner. Une idée?
En plongeant dans le problème que fetch ne fonctionne pas, j'ai découvert que c'était à cause de l'exception suivante qui est levée lors de l'appel de fetch :
Causé par : java.lang.ClassNotFoundException : n'a pas trouvé la classe "android.support.v4.util.ArraySet" sur le chemin : DexPathList
Une idée?
@remisture j'ai eu ce problème lorsqu'un autre fichier gradle faisait encore référence à 12.X, essayez le nettoyage de build.
J'ai résolu en mettant platforms/android/build.gradle
jour
Avant
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
Après:
allprojects {
repositories {
//start here
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.google.android.gms') {
details.useVersion '11.8.0'
}
if (requested.group == 'com.google.firebase') {
details.useVersion '11.8.0'
}
}
}
//end
jcenter()
maven {
url "https://maven.google.com"
}
}
}
Testé sur [email protected]
Vous trouverez ci-dessous l'intégralité de mon build.gradle. A également un peu utile à la fin pour changer le SDK de compilation pour tous les projets
buildscript {
repositories {
jcenter()
google()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.google.android.gms') {
details.useVersion '12.0.1'
}
}
}
mavenLocal()
jcenter()
maven {
url "https://jitpack.io"
}
maven {
url 'https://maven.google.com'
}
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
}
}
}
}
cela semble être résolu en installant cordova-android-play-services-gradle-release
@soumak77 ça marche merci
Commentaire le plus utile
J'ai résolu en mettant
platforms/android/build.gradle
jourAvant
Après:
Testé sur [email protected]