Firebase上传符号文件构建错误:意外参数'ServiceAccount.json'

时间:2016-08-29 16:24:16

标签: ios firebase firebase-crash-reporting dsym

我正在尝试使用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

我的步骤出了什么问题?

13 个答案:

答案 0 :(得分:22)

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

//The program will read a file with the name of endereco, and create a matrix contPx3 out of it
int ** cria_matrix(char endereco[], int contP)
{
    FILE *fPointer;
    int i, contE, auxIndex, auxNum, **processos, cont_line = 0;
    char line[100];
    bool flag = true, flag2;

    fPointer = fopen(endereco, "r");

//Here the creation of the matrix
    processos = (int**)malloc(sizeof(int*) * contP);
    for (i = 0; i < contP; i++)
        processos[i] = malloc(sizeof(int) * 3);



//For now and on, is the rules of how the data will be placed on the matrix
    contP = 0;
    while (!feof(fPointer) && flag)
    {

        memset(&line[0], 'Ì', sizeof(line));
        fgets(line, 100 , fPointer);
//Bassicaly is that in each line there will be 3 numbers only, diveded but as many spaces you want. The numbeer will be placed on the matrix on the determined line they are.
        auxIndex = 0;
        flag2 = false;
        if(line[0] != '#')
            for (i = 0; i < 100; i++)
            {
                if (line[i] != ' ' && line[i] != '\n' && line[i] != '\0' && line[i] != 'Ì')//&&  line[i] != 'à'
                {
                    auxNum = line[i] - '0';
                    processos[contP][auxIndex] = auxNum;
                    auxIndex++;
                    flag2 = true;

                }
            }

        if (flag2)
            contP++;



        cont_line++;
        if (auxIndex != 3 && auxIndex != 0)
        {
            flag = false;
            printf("ERRO na linha: %d No processo: %d\nProvavelmente mais ou menos que 3 numeros separado por espacos\n", cont_line, contP);
        }

    }
    fclose(fPointer);
    if (!flag)
        system("PAUSE");
    return processos;
}

如果您的JSON文件位于项目文件夹“XYZ”中,那么您只需要这个“JSON_FILE = $ {SRCROOT} /XYZ/ServiceAccount.json”,或者如果它位于XYZ的子文件夹中,那么就像这样“ JSON_FILE = $ {SRCROOT} /XYZ/subFolder/ServiceAccount.json“

并设置GOOGLE_APP_ID就是这样。 抱歉英语不好。希望它有所帮助:)

答案 1 :(得分:6)

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

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

答案 2 :(得分:3)

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

for element in aCounter: print(element) 检查您的FirebaseCrash pod版本,如果您使用旧版本,请更新它。

答案 3 :(得分:3)

就我而言,脚本无法找到&#39; FirebaseCrash / upload-sym&#39;因为Google文章只建议我们添加&#39; Firebase / Core&#39;到Podfile。

我补充说:'Firebase/Crash'库然后它有效,希望这有帮助!

答案 4 :(得分:3)

Abdul的解决方案为我工作我必须将 upload-sym 替换为 upload-sym-util.bash 脚本,所以最终看起来像这样:

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

答案 5 :(得分: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”

答案 6 :(得分:2)

更新:最新的FirebaseCrash修复此问题,现在使用情况不同了。

说明错了。您需要手动生成PLIST文件,但仅限ONCE。以下是我对阿卜杜勒剧本的补充:

# 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

答案 7 :(得分:1)

最新的firebase crash upload-sym脚本可以在不指定任何路径的情况下找到服务帐户json,只需将其放在Xcode xcproject文件旁边的同一文件夹中即可。

如果你正在使用CocoaPods,这个简单的脚本示例就可以了:

let index = state.books.findIndex(book => book.id === updateBook.id);

console.log(foundBook);
if (index !== -1) {
    // update existing book
    Object.assign(state.book[index], updateBook);
} else {
    // insert new book
}

如果您不希望每次运行时都上传符号,请改用以下脚本,以减少编译时间:

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

答案 8 :(得分:1)

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

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

没有任何参数。

答案 9 :(得分:0)

首先:添加到文件ServiceAccount“.json” - &gt; 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并再次下载此文件。

答案 10 :(得分:0)

在我的情况下,我执行了与firebase crash report tutorial相同的所有步骤,但我仍然得到相同的错误。后来,我意识到一旦我在Firebase Analytics和Crash Report之前在同一个项目上实施了Google Analytics。所以我遇到了崩溃,因为我从'删除了Google Analytics并在终端中通过Podfile命令重新安装了pod。

答案 11 :(得分:0)

我有同样的错误;我将upload-sym片段放入&#34; Archive&#34;的后期动作中引起的。而不是&#34; Build&#34;

但是上传符号在Archive Post-Action中不起作用。它需要仅在Build actions中可用的环境变量。

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

答案 12 :(得分:0)

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

pod'Fabric','〜> 1.7.2' pod'Crashlytics','〜> 3.9.3'

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

pod“ Firebase /崩溃”