8

我正在尝试使用 firebase 实现崩溃报告。我按照这里的文档。并将下载的子文件重命名为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

我的步骤有什么问题?

4

13 回答 13

22

这是我在练习项目中使用的脚本。

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 就是这样。抱歉英语不好。希望能帮助到你 :)

于 2016-08-29T16:37:04.520 回答
6

这对我有用。刚刚"从 Firebase 文档中描述的方法中删除。

GOOGLE_APP_ID=1:**********:ios:************
"${PODS_ROOT}"/FirebaseCrash/upload-sym ${SRCROOT}/******/GoogleCrashKey.json
于 2016-11-12T21:21:16.993 回答
3

Abdul 的解决方案对我有用,我不得不在脚本中用upload-sym-util.bash替换upload-sym,所以它最终看起来像这样:

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
于 2017-05-22T11:48:58.437 回答
3

自 FirebaseCrash 1.0.7 以来,upload-sym 脚本似乎已更改为采用一个参数。

pod outdated如果您使用的是旧版本,请检查您的 FirebaseCrash pod 版本并更新它。

于 2016-09-22T23:30:35.270 回答
3

就我而言,脚本找不到“FirebaseCrash/upload-sym”,因为 Google 文章只建议我们将“Firebase/Core”添加到 Podfile。

我补充说:'Firebase/Crash'图书馆然后它工作了,希望这有帮助!

于 2017-04-25T09:39:32.200 回答
3

我刚刚在我的脚本中将 /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"

于 2017-10-11T07:02:12.810 回答
2

更新:最新的 FirebaseCrash 已修复此问题,现在用法有所不同。

指示是错误的。您需要手动生成 PLIST 文件,但只需要一次。以下是我对 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
于 2016-08-31T19:04:07.897 回答
1

最新的 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
于 2017-07-31T08:00:43.467 回答
0

首先:添加到文件 ServiceAccount ".json" --> ServiceAccount.json

并将该文件复制到项目的根文件夹。

第二:在“构建阶段”的运行脚本中设置此代码

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并再次下载这个文件。

于 2016-12-12T07:02:51.230 回答
0

我遇到了同样的问题。我的 podfile 中有以下几行:

吊舱'织物','〜> 1.7.2'吊舱'Crashlytics','〜> 3.9.3'

我已通过以下方式替换 pod 文件中的上述行来解决此问题:

pod 'Firebase/崩溃'

于 2019-02-18T12:07:18.027 回答
0

我有 FirebaseCrash 1.0.6。我的解决方案就是使用

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

没有任何参数。

于 2017-09-27T12:49:30.753 回答
0

我有同样的错误;由我将上传符号片段放入“存档”而不是“构建”的后操作引起

但是 upload-sym 在存档后操作中不起作用。它需要仅在构建操作中可用的环境变量。

(ps 我不希望每次构建时都上传它,只是每次为 AppStore 构建时。)

于 2017-05-13T17:23:45.730 回答
0

就我而言,我执行了与给出的firebase 崩溃报告教程相同的所有步骤,但我仍然收到相同的错误。后来,我意识到我在 Firebase Analytics 和 Crash Report 之前在同一个项目上实施了 Google Analytics。所以我遇到了崩溃,为此我已经Google Analytics从终端中删除Podfile并通过命令重新安装了 pod 。pod install

于 2017-03-17T13:23:12.033 回答