上传符号文件
在我的Firebase崩溃报告页面中,找不到崩溃的完整信息(例如行数,文件等)。 我认为这可能是因为它说
上传符号文件以代表UUID未来的堆栈跟踪– – – – ***
告诉我
使用命令行,导航到您的Xcode项目文件夹并运行以下命令:./Pods/FirebaseCrash/batch – upload – – – – ***
不幸的是,当我尝试在我的Xcode项目中执行该命令时,我收到以下消息:
– – – – ***:警告:没有可执行文件或捆绑包完成。
没有什么变化的火力点。 也许这是因为bitcode启用? 我该如何解决?
PS:为了安全起见,我用– – – – ***replace了我的UUID。
这个答案是如果你不使用CocoaPods。
如果您不使用CocoaPods,则需要Pods目录中的一些文件,这些文件不包含在它们提供的标准Firebase库集合中。
有5个文件,如下图所示:
您需要batch-upload
, dump_syms
, upload-sym
, upload-sym-util.bash
和upload-sym.sh
。 您可以从FirebaseCrash Pod文件中检索这些文件。
如果您将这些文件复制到您的项目目录中,并将"${PODS_ROOT}"/FirebaseCrash/
replace为指向这些文件的目录,则应该可以工作。
注意:如果我使用像Jenkins这样的构build服务器,我仍然遇到这个解决scheme的复杂问题。 还有一些工作要做。
我发现这是我的应用程序不使用CocoaPods所必需的。 虽然这可能与你自己的使用没有直接的关系,但我认为至less我应该把它包括给别人试图find答案。
我们目前在第三方共享库(dynamic框架)方面有一些问题,所以如果你使用的是共享库,事情会变得困难。 按照下面的说明,用适用于共享库的pathreplace应用可执行文件的path。
如果不是这样,则有可能报告崩溃的原始可执行文件已经丢失。 即使用相同的资源重build,LC_UUID字段也会改变。
-
validationUUID对于可执行文件是否正确:
dwarfdump --uuid / path / to / your / build / area / MyApp .app / MyApp
如果没有UUID匹配丢失的那个,那么游戏结束。 抱歉。 您可以尝试从Time Machine,Carbonite或其他任何软件恢复可执行文件,但是这只是一个问题。
-
如果其中一个UUID匹配(每个体系结构都有一个),那么您仍然拥有原始的可执行文件,但是很可能缺lessdSYM软件包。 您可以validation是否缺lessdSYM:
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
你应该得到一个回应:你刚刚创build的
upload.dSYM
。如果你没有看到它,给它几秒钟,然后再试一次。
-
再次运行
batch-upload UUID
。 -
如果它仍然不起作用,可以通过处理可执行文件本身来获得部分结果。 运行
batch-upload /path/to/your/build/area/MyApp .app/ MyApp
以获得部分符号。
在我的情况下( 没有COCOAPODS ):
1)从目录“崩溃”导入所有文件
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 ”,它的工作原理!