web-dev-qa-db-fra.com

Erreur de construction des fichiers de symboles de téléchargement Firebase: argument inattendu 'ServiceAccount.json'

J'essaie de mettre en place un rapport d'incident avec Firebase. J'ai suivi la documentation ici . Et renommé le fichier fils téléchargé en ServiceAccount.json. Puis copié dans le répertoire du projet. Également changé le script. Maintenant, mon script d'exécution de phase de construction ressemble à

# Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
GOOGLE_APP_ID=1:.....#my app id

# Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
"${PODS_ROOT}"/FirebaseCrash/upload-sym "ServiceAccount.json"

Mais quand j'essaye de construire le projet, c'est donner l'erreur de construction

Unexpected argument 'ServiceAccount.json'
usage: /Users/<full path>/Pods/FirebaseCrash/upload-sym [-h] [-v] [-w|-e]
Command /bin/sh failed with exit code 2

Quel est le problème avec mes pas?

8
Johnykutty

C'est le script que j'utilise dans mon projet de pratique.

JSON_FILE=${SRCROOT}/*****/ServiceAccount.json
GOOGLE_APP_ID=1:**********:ios:*********

defaults write com.google.SymbolUpload version -integer 1

JSON=$(cat "${JSON_FILE}")
/usr/bin/plutil -replace "app_${GOOGLE_APP_ID//:/_}" -json "${JSON}" "$HOME/Library/Preferences/com.google.SymbolUpload.plist"
"${PODS_ROOT}"/FirebaseCrash/upload-sym

Si votre fichier JSON se trouve dans le dossier du projet "XYZ", vous avez uniquement besoin de ce "JSON_FILE = $ {SRCROOT} /XYZ/ServiceAccount.json" ou s'il se trouve dans un sous-dossier de XYZ, comme ceci "JSON_FILE = $ { SRCROOT} /XYZ/subFolder/ServiceAccount.json "

Et mettez-vous GOOGLE_APP_ID et c'est tout. Désolé pour le mauvais anglais. J'espère que ça aide :)

22

Cela fonctionne pour moi. Vient de retirer " de la méthode décrite dans les documents Firebase.

GOOGLE_APP_ID=1:**********:ios:************
"${PODS_ROOT}"/FirebaseCrash/upload-sym ${SRCROOT}/******/GoogleCrashKey.json
6
Sahil Kapoor

Il semble que le script upload-sym ait été modifié pour prendre un paramètre depuis FirebaseCrash 1.0.7.

Vérifiez votre version du pod FirebaseCrash avec pod outdated et mettez-la à jour si vous utilisez une version plus ancienne.

3
Hiron

Je viens de changer/FirebaseCrash/upload-sym en /FirebaseCrash/upload-sym-util.bash dans mon script, cela a fonctionné

GOOGLE_APP_ID = 1: 1234567830: ios: 7sjghd66373hbdd2 "$ {PODS_ROOT}"/FirebaseCrash/upload-sym-util.bash "/Users/iosteam/Documents/MYLES-iOS-i86994a092e8j8"

3
Sourabh Shekhar

La solution d'Abdul a fonctionné pour moi mais je devais remplacer upload-sym par upload-sym-util.bash dans le script, ce qui donnait l'impression suivante:

JSON_FILE=${SRCROOT}/Pods/FirebaseCrash/ServiceAccount.json
GOOGLE_APP_ID=1:*:ios:*

defaults write com.google.SymbolUpload version -integer 1

JSON=$(cat "${JSON_FILE}")
/usr/bin/plutil -replace "app_${GOOGLE_APP_ID//:/_}" -json "${JSON}" "$HOME/Library/Preferences/com.google.SymbolUpload.plist"
"${PODS_ROOT}"/FirebaseCrash/upload-sym-util.bash
3

Mise à jour : La dernière version de FirebaseCrash a résolu ce problème et son utilisation est maintenant différente.

Les instructions sont fausses. Vous devez générer manuellement le fichier PLIST, mais seulement UNE FOIS. Ce qui suit est mon ajout au script d'Abdul:

# Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
GOOGLE_APP_ID=1:*:iOS:*

# Insert this code BETWEEN the GOOGLE_APP_ID declaration and the
# call to FirebaseCrash/upload-sym, to generate PLIST file if needed
# Note the PLIST_FILE location is hard-coded in firebase script, do not change
PLIST_FILE="${HOME}/Library/Preferences/com.google.SymbolUpload.plist" # DO NOT CHANGE
if [ ! -f "${PLIST_FILE}" ]; then
  JSON_FILE="${PODS_ROOT}/FirebaseSymbolUploadKey.json"  # Change to location of your file
  defaults write com.google.SymbolUpload version -integer 1  # Required by script
  JSON=$(cat "${JSON_FILE}")
  /usr/bin/plutil -replace "app_${GOOGLE_APP_ID//:/_}" -json "${JSON}" "${PLIST_FILE}"
fi

# Instructions WRONG, don't pass any args, script hard-codes where it looks
# for credentials, which is handled by the JSON conversion above
"${PODS_ROOT}"/FirebaseCrash/upload-sym
2
Speedy99

Dans mon cas, le script n'a pas trouvé le fichier "FirebaseCrash/upload-sym", car l'article de Google nous recommande uniquement d'ajouter "Firebase/Core" à Podfile. 

Et j'ai ajouté: 'Firebase/Crash' library alors cela a fonctionné, espérons cette aide!

2
ChenHuang

Le dernier script d’import-crash crash de Firebase peut trouver le compte de service json sans spécifier de chemin. Placez-le simplement dans le même dossier que votre fichier xcode xcproject.

Si vous utilisez CocoaPods, quelque chose comme cet exemple de script simple fonctionne:

GOOGLE_APP_ID=1:1234567890:ios:ab123cd456ef789
"${PODS_ROOT}"/FirebaseCrash/upload-sym crash-service-account.json

Si vous ne souhaitez pas télécharger de symboles à chaque fois que vous exécutez, utilisez plutôt le script suivant pour réduire un peu le temps de compilation:

if ["${CONFIGURATION}" != "Debug" ]; then
GOOGLE_APP_ID=1:1234567890:ios:ab123cd456ef789
"${PODS_ROOT}"/FirebaseCrash/upload-sym crash-service-account.json
fi
1
Dhiraj Gupta

J'ai FirebaseCrash 1.0.6. Et ma solution était juste utiliser

"${PODS_ROOT}"/FirebaseCrash/upload-sym

sans aucun paramètre.

1
Yaroslav Babenko

J'ai fait face au même problème. J'ai les lignes suivantes dans mon podfile:

pod 'Fabric', '~> 1.7.2' Pod 'Crashlytics', '~> 3.9.3'

J'ai résolu le problème en remplaçant les lignes ci-dessus dans le fichier pod en procédant comme suit:

pod 'Firebase/Crash'

0
Tanvi Jain

Dans mon cas, j’ai fait toutes les étapes de la même manière que tutoriel sur les rapports de crash de Firebase donné, même si j’obtenais la même erreur Plus tard, j'ai réalisé que jadis j'avais implémenté Google Analytics avant Firebase Analytics et Crash Report sur le même projet. Donc, j'ai eu le crash, Pour cela, j'ai supprimé le Google Analytics de la Podfile et réinstallé le pod par la commande pod install dans le terminal.

0
Manab Kumar Mal

Premièrement: ajoutez au fichier ServiceAccount ".json" -> ServiceAccount.json

et copiez ce fichier dans le dossier racine de votre projet.

Deuxièmement: définir ce code dans le script d'exécution dans "Build Phases"

GOOGLE_APP_ID= copy here your "GOOGLE_APP_ID" from GoogleService-Info.plist

"${PODS_ROOT}"/FirebaseCrash/upload-sym  "${ROOT}"ServiceAccount.json
  • faites attention à ce que GoogleService-Info.plist ait le "API_KEY" 

    sinon, allez sur firebase et téléchargez à nouveau ce fichier. 

0
Roei Nadam

J'ai eu la même erreur; causée par le fait que je mette l'extrait de téléchargement upload-sym dans la post-action de "Archive" au lieu de "Build"

Mais upload-sym ne fonctionne pas dans Archive Post-Action. Cela nécessite des variables d'environnement disponibles uniquement dans les actions de génération.

(p. Je ne voulais pas le télécharger chaque fois que je construisais, mais juste chaque fois que je construisais un build pour l'AppStore.) 

0
Billy