【问题标题】:Firebase crash reporting on iOS gives build error "symbolFileMappings:upsert: Request contains an invalid argument."iOS 上的 Firebase 崩溃报告给出了构建错误“symbolFileMappings:upsert: Request contains an invalid argument。”
【发布时间】:2016-05-30 22:11:22
【问题描述】:

我正在尝试设置 Firebase 的新崩溃报告 via their docs 并遇到错误。当我构建项目时,我从运行脚本阶段收到此错误:

Pods/FirebaseCrash/upload-sym-util.bash:384: error: symbolFileMappings:upsert: Request contains an invalid argument.

经过一番调试后,我找到了VERBOSE 标志并将其设置为如下所示的更多信息(已删除键)

/Pods/FirebaseCrash/upload-sym-util.bash:376: note: another thing
== Info:   Trying 216.58.216.47...
== Info: Connected to mobilecrashreporting.googleapis.com (216.58.216.47) port 443 (#0)
== Info: TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
== Info: Server certificate: *.googleapis.com
== Info: Server certificate: Google Internet Authority G2
== Info: Server certificate: GeoTrust Global CA
=> Send header, 413 bytes (0x19d)
0000: POST /v1/apps/1:000000000000:ios:0000000000000000/symbolFileMapp
0040: ings:upsert?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1
0082: Host: mobilecrashreporting.googleapis.com
00ad: User-Agent: curl/7.43.0
00c6: Accept: */*
00d3: Content-Type: application/json
00f3: X-Ios-Bundle-Identifier: com.jakecraige.Inventry
0125: Authorization: Bearer XXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0165: XXXXXXXXXXXXXXXXXXXXXXXXXXX-XXX
0186: Content-Length: 186
019b: 
=> Send data, 186 bytes (0xba)
0000: {"upload_key":"1:000000000000:ios:0000000000000000-00000000-0000
0040: -0000-0000-000000000000","symbol_file_mapping":{"symbol_type":2,
0080: "app_version":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}}
== Info: upload completely sent off: 186 out of 186 bytes
<= Recv header, 26 bytes (0x1a)
0000: HTTP/1.1 400 Bad Request
<= Recv header, 16 bytes (0x10)
0000: Vary: X-Origin
<= Recv header, 15 bytes (0xf)
0000: Vary: Referer
<= Recv header, 47 bytes (0x2f)
0000: Content-Type: application/json; charset=UTF-8
<= Recv header, 37 bytes (0x25)
0000: Date: Mon, 30 May 2016 21:47:10 GMT
<= Recv header, 13 bytes (0xd)
0000: Server: ESF
<= Recv header, 24 bytes (0x18)
0000: Cache-Control: private
<= Recv header, 33 bytes (0x21)
0000: X-XSS-Protection: 1; mode=block
<= Recv header, 29 bytes (0x1d)
0000: X-Frame-Options: SAMEORIGIN
<= Recv header, 33 bytes (0x21)
0000: X-Content-Type-Options: nosniff
<= Recv header, 30 bytes (0x1e)
0000: Alternate-Protocol: 443:quic
<= Recv header, 69 bytes (0x45)
0000: Alt-Svc: quic=":443"; ma=2592000; v="34,33,32,31,30,29,28,27,26,
0040: 25"
<= Recv header, 21 bytes (0x15)
0000: Accept-Ranges: none
<= Recv header, 30 bytes (0x1e)
0000: Vary: Origin,Accept-Encoding
<= Recv header, 28 bytes (0x1c)
0000: Transfer-Encoding: chunked
<= Recv header, 2 bytes (0x2)
0000: 
<= Recv data, 138 bytes (0x8a)
0000: 7f
0004: {.  "error": {.    "code": 400,.    "message": "Request contains
0044:  an invalid argument.",.    "status": "INVALID_ARGUMENT".  }.}.
0085: 0
0088: 
== Info: Connection #0 to host mobilecrashreporting.googleapis.com left intact
/Pods/FirebaseCrash/upload-sym-util.bash:385: note: symbolFileMappings:upsert: The metadata for the symbol file failed to update.

所以看起来mobilecrashreporting.googleapis.com/v1/apps/$GOOGLE_APP_ID/symbolFileMappings:upsert?key=$FIREBASE_API_KEY 的 POST 失败了。

查看所有参数,它们似乎与我的配置匹配,没有任何内容是空的,所以我不确定下一步该做什么。

还有其他人遇到过这种情况吗?想知道如何解决它?

谢谢!

【问题讨论】:

    标签: ios firebase firebase-crash-reporting


    【解决方案1】:

    在构建报告中,当以 verbose=3 ('-vvv') 运行时,您是否看到类似以下行的内容?

    CrashTestApp (architecture x86_64) symbol dump follows (first 20 lines):
    MODULE mac x86_64 5FFC1B5C32CF33EEB4BFFA4189412AE30 CrashTestApp
    FILE 0 /Applications/Xcode.app/…
    ⋮
    FILE 4 /Users/me/Source/CrashTestApp/…
    FUNC 1bf0 54 0 -[ViewController viewDidLoad]
    1bf0 14 11 4
    1c04 30 12 4
    ⋮
    

    (数字和文件名显然会有所不同。)关键是第一行中的魔术模式:它必须以MODULE 开头,后跟机器类型和架构(单个单词),后跟 33 位十六进制字符串,然后是应用程序的名称。如果文件上传不遵循该模式,则 upsert 步骤将失败。

    【讨论】:

    • 嘿罗伯特,这就是我看到的那条线MODULE mac x86_64 45FA3BDF3866336FACCE04D28744BAF30 Inventry
    • 我实际上看到了两个不同的字符串,MODULE mac x86_64 45FA3BDF3866336FACCE04D28744BAF30 InventryMODULE mac x86_64 45FA3BDF3866336FACCE04D28744BAF30 Inventry.FILE,也许第二个是罪魁祸首?那里的换行符发生了一些奇怪的事情。这里有更多上下文:gist.github.com/jakecraige/79ac463e7da0e5605bdf502bdd0edf47
    • @robert-menke 我有同样的问题,并在 verbose=3 上运行后验证 MODULE mac 的东西很好。 然而,它揭示了正在为 upsert 传递的参数,其中之一,app_version 是导致失败的原因。在我的例子中,我正在做一个调试版本,我的调试版本是3.7-dev(即不是所有的数字和点)。将其更改为 3.7 会使 upsert 请求成功完成。我很想看看@jakecraige 的应用版本是否有类似的问题。
    • @RizwanSattar 就是这样!我有一个 build script 将内部版本号设置为 git 提交哈希,所以当我删除它并设置为标准版本号时它可以工作。
    • 很抱歉。后端团队拒绝任何不是杜威十进制格式 (=~ m/^\d+(?:\.\d+)*$/) 的版本。这不是一个有效的限制,因为版本仅用于标记,但他们认为有必要过滤掉损坏的上传。
    猜你喜欢
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多