iOS上的Firebase崩溃报告产生构建错误“symbolFileMappings:upsert:Request包含无效参数。”

问题描述:

我在尝试设置Firebase的新崩溃报告via their docs并且遇到错误。当我建立这个项目我得到这个错误从运行脚本阶段:iOS上的Firebase崩溃报告产生构建错误“symbolFileMappings:upsert:Request包含无效参数。”

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. 

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

通过所有的参数来看,他们似乎与我的配置相匹配,没有什么是空的,所以我不确定接下来要做什么。

有没有其他人遇到过这个问题?如何解决它的想法?

谢谢!

在构建报告中,当在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开始数字十六进制字符串,然后是应用程序的名称。如果文件上传不符合该模式,则上插步骤失败。

+0

嘿罗伯特,这是我所看到的该行'MODULE MAC x86_64的45FA3BDF3866336FACCE04D28744BAF30 Inventry' – jakecraige

+0

实际上,我看到这样两个不同的字符串,'MODULE MAC x86_64的45FA3BDF3866336FACCE04D28744BAF30 Inventry'和'MODULE MAC x86_64的45FA3BDF3866336FACCE04D28744BAF30 Inventry。 FILE',也许第二个是罪魁祸首?那里有一些奇怪的新线。更多的上下文在这里:https://gist.github.com/jakecraige/79ac463e7da0e5605bdf502bdd0edf47 – jakecraige

+3

@ robert-menke我有同样的问题,并验证后运行verbose = 3模块mac的东西很好。 *然而,它揭示了为upsert传递的参数,其中一个“app_version”是导致失败的原因。在我的情况下,我正在做一个调试版本,而我的调试版本是'3.7-dev'(即不是所有的数字和点)。将其更改为'3.7'会使upsert请求成功完成。我有兴趣了解@jakecraige是否与应用版本有类似的问题。 –