上传符号文件
Upload symbol files
在我的 Firebase 崩溃报告页面中,我找不到崩溃的完整信息(例如行数、文件等)。
我认为这可能是因为它说
Upload symbol file to symbolicate future stack traces for UUID
----***
告诉我
Using the command line, navigate to your Xcode project folder and run
the following: ./Pods/FirebaseCrash/batch-upload ----***
不幸的是,当我尝试在我的 Xcode 项目中执行该命令时,我收到以下消息:
----***: warning: no executable or bundle
Done.
Firebase 中没有任何变化。也许是因为启用了位码?我该如何解决?
P.S。 : 我已经用 --- 替换了我的 UUID -*** 出于安全原因。
这个答案是在你没有使用 Cocoa 的情况下Pods。
如果您不使用 CocoaPods,您将需要 Pods 目录中的一些文件,这些文件未包含在他们提供的标准 Firebase 库集中。
共有5个文件,如下图:
您将需要 batch-upload
、dump_syms
、upload-sym
、upload-sym-util.bash
和 upload-sym.sh
。您可以从 FirebaseCrash Pod 文件中检索这些文件。
如果将它们复制到项目目录中并将 "${PODS_ROOT}"/FirebaseCrash/
替换为指向这些文件的目录,它应该可以工作。
注意:如果我使用像 Jenkins 这样的构建服务器,我仍然对这个解决方案感到困惑。还有一些工作要做。
我发现我的不使用 Cocoa 的应用程序需要这样做Pods。虽然这可能与您自己的使用没有直接关系,但我认为至少我应该将它包含在其他试图找到答案的人手中。
我们目前在第三方共享库(动态框架)方面存在一些问题,因此如果您使用共享库,事情就会变得困难。按照以下说明进行操作,但将应用程序可执行文件的路径替换为共享库的路径。
如果没有,则报告崩溃的原始可执行文件可能已经丢失。即使使用相同的源重新构建,LC_UUID 字段也会发生变化。
验证可执行文件的 UUID 是否正确:
dwarfdump --uuid /path/to/your/build/area/MyApp.app/MyApp
如果 none 个 UUID 匹配缺失的 UUID,则游戏结束。对不起。您可以尝试从 Time Machine、Carbonite 或其他任何工具恢复可执行文件,仅此而已。
如果其中一个 UUID 匹配(每个体系结构都有一个),那么您仍然拥有原始可执行文件,但很可能缺少 dSYM 包。您可以验证是否缺少 dSYM:
mdfind com_apple_xcode_dsym_uuids=UUID
您应该看不到任何响应。
重新生成 dSYM 包:
dsymutil -o=upload.dSYM /path/to/your/build/area/MyApp.app/MyApp
检查 dSYM 包是否已注册:
mdfind com_apple_xcode_dsym_uuids=UUID
您应该会收到一个回复:您刚刚创建的 upload.dSYM
。
如果您没有看到,请稍等片刻,然后重试。
运行 <b>再次批量上传</b><i>UUID</i>
.
如果还是不行,您可以通过处理可执行文件本身来获得部分结果。 运行 <b>批量上传</b> <i>/path/to/your/build/area/MyApp</i><b>.app/</b><i>MyApp</i>
获取部分符号。
在我的例子中(没有椰子足):
1) 从目录 "Crash"
导入所有文件
2) 像这样将脚本添加到 "Build Phases" 选项卡中:
# Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
GOOGLE_APP_ID=1:xxxxxxxxxxxx:ios:xxxxxxxxxxxx
# Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
"${SRCROOT}"/upload-sym "${SRCROOT}/*NameOfTargetDirectory*/ServiceAccount.json"
您需要更改脚本中的“NameOfTargetDirectory”,它才有效!
在我的 Firebase 崩溃报告页面中,我找不到崩溃的完整信息(例如行数、文件等)。 我认为这可能是因为它说
Upload symbol file to symbolicate future stack traces for UUID ----***
告诉我
Using the command line, navigate to your Xcode project folder and run the following: ./Pods/FirebaseCrash/batch-upload ----***
不幸的是,当我尝试在我的 Xcode 项目中执行该命令时,我收到以下消息:
----***: warning: no executable or bundle Done.
Firebase 中没有任何变化。也许是因为启用了位码?我该如何解决?
P.S。 : 我已经用 --- 替换了我的 UUID -*** 出于安全原因。
这个答案是在你没有使用 Cocoa 的情况下Pods。
如果您不使用 CocoaPods,您将需要 Pods 目录中的一些文件,这些文件未包含在他们提供的标准 Firebase 库集中。
共有5个文件,如下图:
您将需要 batch-upload
、dump_syms
、upload-sym
、upload-sym-util.bash
和 upload-sym.sh
。您可以从 FirebaseCrash Pod 文件中检索这些文件。
如果将它们复制到项目目录中并将 "${PODS_ROOT}"/FirebaseCrash/
替换为指向这些文件的目录,它应该可以工作。
注意:如果我使用像 Jenkins 这样的构建服务器,我仍然对这个解决方案感到困惑。还有一些工作要做。
我发现我的不使用 Cocoa 的应用程序需要这样做Pods。虽然这可能与您自己的使用没有直接关系,但我认为至少我应该将它包含在其他试图找到答案的人手中。
我们目前在第三方共享库(动态框架)方面存在一些问题,因此如果您使用共享库,事情就会变得困难。按照以下说明进行操作,但将应用程序可执行文件的路径替换为共享库的路径。
如果没有,则报告崩溃的原始可执行文件可能已经丢失。即使使用相同的源重新构建,LC_UUID 字段也会发生变化。
验证可执行文件的 UUID 是否正确:
dwarfdump --uuid /path/to/your/build/area/MyApp.app/MyApp
如果 none 个 UUID 匹配缺失的 UUID,则游戏结束。对不起。您可以尝试从 Time Machine、Carbonite 或其他任何工具恢复可执行文件,仅此而已。
如果其中一个 UUID 匹配(每个体系结构都有一个),那么您仍然拥有原始可执行文件,但很可能缺少 dSYM 包。您可以验证是否缺少 dSYM:
mdfind com_apple_xcode_dsym_uuids=UUID
您应该看不到任何响应。
重新生成 dSYM 包:
dsymutil -o=upload.dSYM /path/to/your/build/area/MyApp.app/MyApp
检查 dSYM 包是否已注册:
mdfind com_apple_xcode_dsym_uuids=UUID
您应该会收到一个回复:您刚刚创建的
upload.dSYM
。如果您没有看到,请稍等片刻,然后重试。
运行
<b>再次批量上传</b><i>UUID</i>
.如果还是不行,您可以通过处理可执行文件本身来获得部分结果。 运行
<b>批量上传</b> <i>/path/to/your/build/area/MyApp</i><b>.app/</b><i>MyApp</i>
获取部分符号。
在我的例子中(没有椰子足):
1) 从目录 "Crash"
导入所有文件
2) 像这样将脚本添加到 "Build Phases" 选项卡中:
# Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
GOOGLE_APP_ID=1:xxxxxxxxxxxx:ios:xxxxxxxxxxxx
# Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
"${SRCROOT}"/upload-sym "${SRCROOT}/*NameOfTargetDirectory*/ServiceAccount.json"
您需要更改脚本中的“NameOfTargetDirectory”,它才有效!