Firebase upload symbol files build error: Unexpected argument 'ServiceAccount.json'
Firebase upload symbol files build error: Unexpected argument 'ServiceAccount.json'
我正在尝试使用 firebase 实现崩溃报告。我跟着documentation here。并将下载的子文件重命名为ServiceAccount.json
。然后复制到项目目录。还改了剧本。现在我的构建阶段 运行 脚本看起来像
# 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"
但是当我尝试构建项目时出现构建错误
Unexpected argument 'ServiceAccount.json'
usage: /Users/<full path>/Pods/FirebaseCrash/upload-sym [-h] [-v] [-w|-e]
Command /bin/sh failed with exit code 2
我的步骤有什么问题吗?
这是我在练习项目中使用的脚本。
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
如果您的 JSON 文件在项目文件夹 "XYZ" 中,那么您只需要这个 "JSON_FILE=${SRCROOT}/XYZ/ServiceAccount.json" 或者如果它在 XYZ 的子文件夹中,那么像这样"JSON_FILE=${SRCROOT}/XYZ/subFolder/ServiceAccount.json"
然后设置你 GOOGLE_APP_ID 就是这样。
抱歉英语不好。希望对你有帮助:)
更新:最新的 FirebaseCrash 已修复此问题,现在用法不同。
说明有误。您需要手动生成 PLIST 文件,但只需一次。以下是我对阿卜杜勒剧本的补充:
# 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
自 FirebaseCrash 1.0.7 以来,upload-sym 脚本似乎已更改为采用一个参数。
通过 pod outdated
检查您的 FirebaseCrash pod 版本,如果您使用的是旧版本,请更新它。
这对我有用。刚刚从 Firebase 文档中描述的方法中删除了 "
。
GOOGLE_APP_ID=1:**********:ios:************
"${PODS_ROOT}"/FirebaseCrash/upload-sym ${SRCROOT}/******/GoogleCrashKey.json
首先:添加到文件 ServiceAccount ".json" --> ServiceAccount.json
并将该文件复制到项目的根文件夹中。
第二:在 "Build Phases"
的 运行 脚本中设置此代码
GOOGLE_APP_ID= copy here your "GOOGLE_APP_ID" from GoogleService-Info.plist
"${PODS_ROOT}"/FirebaseCrash/upload-sym "${ROOT}"ServiceAccount.json
注意 GoogleService-Info.plist 有 "API_KEY"
如果没有,请转到 firebase 并再次下载此文件。
在我的例子中,我执行了与 firebase crash report tutorial 相同的所有步骤,但我仍然遇到相同的错误。后来,我意识到在同一项目上实施 Google Analytics before Firebase Analytics 和 Crash Report。所以我遇到了崩溃,为此我从 Podfile
中删除了 Google Analytics
并通过终端中的 pod install
命令重新安装了 pod。
在我的例子中,脚本找不到 'FirebaseCrash/upload-sym' 因为 Google 文章只建议我们将 'Firebase/Core' 添加到 Podfile。
然后我添加了:'Firebase/Crash'
库,然后就可以使用了,希望对您有所帮助!
我有同样的错误;由于我将 upload-sym 片段放入 "Archive" 的 Post-Action 而不是 "Build"
但是 upload-sym 在 Archive Post-Action 中不起作用。它需要仅在构建操作中可用的环境变量。
(p.s。我不希望每次构建时都上传,只是每次为 AppStore 构建时。)
Abdul 的解决方案对我有用 但是 我不得不用 upload-sym-[= 替换 upload-sym 19=] 在脚本中,所以它最终看起来像这样:
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
最新的 firebase crash upload-sym 脚本可以在不指定任何路径的情况下找到服务帐户 json,只需将其放在 Xcode xcproject 文件旁边的同一文件夹中即可。
如果您使用的是 CocoaPods,则可以使用类似于此简单脚本示例的方法:
GOOGLE_APP_ID=1:1234567890:ios:ab123cd456ef789
"${PODS_ROOT}"/FirebaseCrash/upload-sym crash-service-account.json
如果您不想每次 运行 都上传符号,请改用以下脚本,以减少编译时间:
if ["${CONFIGURATION}" != "Debug" ]; then
GOOGLE_APP_ID=1:1234567890:ios:ab123cd456ef789
"${PODS_ROOT}"/FirebaseCrash/upload-sym crash-service-account.json
fi
我有 FirebaseCrash 1.0.6。我的解决方案就是使用
"${PODS_ROOT}"/FirebaseCrash/upload-sym
没有任何参数。
我刚刚在我的脚本中将 /FirebaseCrash/upload-sym 更改为 /FirebaseCrash/upload-sym-util.bash,它起作用了
GOOGLE_APP_ID=1:1234567830:ios:7sjghd66373hbdd2
"${PODS_ROOT}"/FirebaseCrash/upload-sym-util.bash "/Users/iosteam/Documents/MYLES-iOS-a86994a092e8.json"
我遇到了同样的问题。我的播客文件中有以下几行:
pod 'Fabric', '~> 1.7.2'
pod 'Crashlytics', '~> 3.9.3'
我已通过以下方式替换 pod 文件中的以上行来解决问题:
连播 'Firebase/Crash'
我正在尝试使用 firebase 实现崩溃报告。我跟着documentation here。并将下载的子文件重命名为ServiceAccount.json
。然后复制到项目目录。还改了剧本。现在我的构建阶段 运行 脚本看起来像
# 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"
但是当我尝试构建项目时出现构建错误
Unexpected argument 'ServiceAccount.json'
usage: /Users/<full path>/Pods/FirebaseCrash/upload-sym [-h] [-v] [-w|-e]
Command /bin/sh failed with exit code 2
我的步骤有什么问题吗?
这是我在练习项目中使用的脚本。
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
如果您的 JSON 文件在项目文件夹 "XYZ" 中,那么您只需要这个 "JSON_FILE=${SRCROOT}/XYZ/ServiceAccount.json" 或者如果它在 XYZ 的子文件夹中,那么像这样"JSON_FILE=${SRCROOT}/XYZ/subFolder/ServiceAccount.json"
然后设置你 GOOGLE_APP_ID 就是这样。 抱歉英语不好。希望对你有帮助:)
更新:最新的 FirebaseCrash 已修复此问题,现在用法不同。
说明有误。您需要手动生成 PLIST 文件,但只需一次。以下是我对阿卜杜勒剧本的补充:
# 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
自 FirebaseCrash 1.0.7 以来,upload-sym 脚本似乎已更改为采用一个参数。
通过 pod outdated
检查您的 FirebaseCrash pod 版本,如果您使用的是旧版本,请更新它。
这对我有用。刚刚从 Firebase 文档中描述的方法中删除了 "
。
GOOGLE_APP_ID=1:**********:ios:************
"${PODS_ROOT}"/FirebaseCrash/upload-sym ${SRCROOT}/******/GoogleCrashKey.json
首先:添加到文件 ServiceAccount ".json" --> ServiceAccount.json
并将该文件复制到项目的根文件夹中。
第二:在 "Build Phases"
的 运行 脚本中设置此代码GOOGLE_APP_ID= copy here your "GOOGLE_APP_ID" from GoogleService-Info.plist
"${PODS_ROOT}"/FirebaseCrash/upload-sym "${ROOT}"ServiceAccount.json
注意 GoogleService-Info.plist 有 "API_KEY"
如果没有,请转到 firebase 并再次下载此文件。
在我的例子中,我执行了与 firebase crash report tutorial 相同的所有步骤,但我仍然遇到相同的错误。后来,我意识到在同一项目上实施 Google Analytics before Firebase Analytics 和 Crash Report。所以我遇到了崩溃,为此我从 Podfile
中删除了 Google Analytics
并通过终端中的 pod install
命令重新安装了 pod。
在我的例子中,脚本找不到 'FirebaseCrash/upload-sym' 因为 Google 文章只建议我们将 'Firebase/Core' 添加到 Podfile。
然后我添加了:'Firebase/Crash'
库,然后就可以使用了,希望对您有所帮助!
我有同样的错误;由于我将 upload-sym 片段放入 "Archive" 的 Post-Action 而不是 "Build"
但是 upload-sym 在 Archive Post-Action 中不起作用。它需要仅在构建操作中可用的环境变量。
(p.s。我不希望每次构建时都上传,只是每次为 AppStore 构建时。)
Abdul 的解决方案对我有用 但是 我不得不用 upload-sym-[= 替换 upload-sym 19=] 在脚本中,所以它最终看起来像这样:
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
最新的 firebase crash upload-sym 脚本可以在不指定任何路径的情况下找到服务帐户 json,只需将其放在 Xcode xcproject 文件旁边的同一文件夹中即可。
如果您使用的是 CocoaPods,则可以使用类似于此简单脚本示例的方法:
GOOGLE_APP_ID=1:1234567890:ios:ab123cd456ef789
"${PODS_ROOT}"/FirebaseCrash/upload-sym crash-service-account.json
如果您不想每次 运行 都上传符号,请改用以下脚本,以减少编译时间:
if ["${CONFIGURATION}" != "Debug" ]; then
GOOGLE_APP_ID=1:1234567890:ios:ab123cd456ef789
"${PODS_ROOT}"/FirebaseCrash/upload-sym crash-service-account.json
fi
我有 FirebaseCrash 1.0.6。我的解决方案就是使用
"${PODS_ROOT}"/FirebaseCrash/upload-sym
没有任何参数。
我刚刚在我的脚本中将 /FirebaseCrash/upload-sym 更改为 /FirebaseCrash/upload-sym-util.bash,它起作用了
GOOGLE_APP_ID=1:1234567830:ios:7sjghd66373hbdd2 "${PODS_ROOT}"/FirebaseCrash/upload-sym-util.bash "/Users/iosteam/Documents/MYLES-iOS-a86994a092e8.json"
我遇到了同样的问题。我的播客文件中有以下几行:
pod 'Fabric', '~> 1.7.2' pod 'Crashlytics', '~> 3.9.3'
我已通过以下方式替换 pod 文件中的以上行来解决问题:
连播 'Firebase/Crash'