我正在尝试按照Firebase Docs上的说明上载缺少的必需dSYM。但是我一直在运行上传程序脚本。
在我的构建阶段中
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols -gsp${SRCROOT}/GoogleService-Info.plist -p ios ${SRCROOT}/appDsyms"
当我尝试以此构建iOS应用时,出现错误:
第4行:/ path / to / Pods / FirebaseCrashlytics / upload-symbols -gsp / path / to / GoogleService-Info.plist -p ios / path / to / appDsyms:没有此类文件或目录
命令PhaseScriptExecution失败,退出代码非零
当我尝试从终端运行脚本时,出现错误:
未提供Google App ID或Google服务文件
我已验证我具有Google Services文件,并且能够使用依赖该文件的其他Firebase服务来运行我的项目。我以前可以直接将Dysm文件上传到Firebase控制台,但是3月1日发生了变化。
该命令应作为XCode脚本还是来自终端的命令运行?而且,更重要的是,有人知道如何解决此问题吗?
答案 0 :(得分:43)
截至2020年5月:
Fabrics
关闭后,许多开发人员都遇到了此类问题,因为Fabric会自动创建脚本来从dSYM
上传Xcode
文件,而我们从不关注它。
现在将Fabric
替换为FirebaseCrashlytics
,为了实现此自动机制,您可以创建一个新的运行脚本并将此脚本粘贴到此处:
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
此脚本将获取dSYM文件并将其上传到Firebase服务器,以便您可以查看崩溃。
对于多个方案:
如果您的项目有多个方案,则只需更改Google Plist文件的路径即可创建多个此类脚本。
注意:您还可以使用dSYM
工具 [Check here]手动上传upload-symbols
文件,但始终最好使过程自动化。< / p>
编辑:2020年7月:
如果您在Crashlytics
信息中心中发现了因崩溃而丢失的dSYM文件,而不是收到电子邮件,则可以在将其提交给Apple或通过“试飞”进行测试。
之所以显示缺少dSYM
是因为启用dSYM
时,bitCode
处理二进制后将其上传并生成新的dSYM文件。
您可以在App Store Connect
的{{1}}部分中找到dSYM文件。
答案 1 :(得分:19)
2020 FirebaseCrashlytics解决方案
您有两种解决方案:
1)从命令行
转到您的项目文件夹并运行:
./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios <path_to_your_dsyms_zip>
您可以在Xcode组织器中获取dsym,然后右键单击存档>在Finder中显示->显示内容->进入dsymm文件夹并进行压缩
2)在Xcode构建阶段
如here (Firebase doc)所述,您可以在Xcode中添加具有以下内容的运行脚本阶段:
"${PODS_ROOT}/FirebaseCrashlytics/run"
您还必须在运行脚本下添加这两个输入文件:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
和
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
答案 2 :(得分:18)
经过数小时的努力,终于使用以下方法解决了该问题:
在终端/path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
重要的是,您应该在应用程序文件夹中输入pods文件夹的路径,而不是/path/to/pods/directory
,而不是/path/to
中输入GoogleService-Info.plist的路径,该路径位于您的项目文件夹。最后一个是,您应该输入格式为/path/to/dSYMs
的存档路径,而不是.xcarchive
。
要找到.xcarchive
路径,您应该首先存档您的应用程序,然后转到XCode-> Organizer并选择您的构建,然后右键单击它并选择“ Show in finder”,然后右键单击您的构建。 .xcarchive
文件,然后选择“显示包内容”。就这样,您可以复制此路径并粘贴它而不是/path/to/dSYMs
,然后按Enter键开始上传到Firebase Crashlytics。
查看此链接以获取更多信息: Firebase Docs
答案 3 :(得分:9)
在为Crashlytics实现FirebaseCrashlytics(当前处于测试版)时
从Build Phases
添加新的运行脚本,并添加以下内容:
"${PODS_ROOT}/FirebaseCrashlytics/run"
在Input Files
部分中添加
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
和
$(SRCROOT)/path to/GoogleService-Info.plist
如果仍然出现dSYM
丢失的错误,请尝试从终端运行
/path/to/pods/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
对于path to FirebaseCrashlytics
和GoogleService-Info.plist
,请从实际位置拖放
对于dSYM,路径将为${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
要获得该效果,请使用您的项目.xcodeproj并定位到目标xcodebuild -project YourProject.xcodeproj -target YourTarget -showBuildSettings
并替换您的特定路径
在实施Crashlytics时请注意以下事项
1.以发布模式运行应用程序
2.在测试从Mac断开设备连接时
3.设置正确的GoogleService-Info.plist
4.如果重命名,请确保在需要时设置正确的文件名。
答案 4 :(得分:5)
“ $ {PODS_ROOT} / FirebaseCrashlytics / upload-symbols” -gsp “ $ {PROJECT_DIR} / 附加文件夹 /GoogleService-Info.plist” -p ios “ $ {DWARF_DSYM_FOLDER_PATH} / $ {DWARF_DSYM_FILE_NAME}”
我在其他文件夹中替换了我的GoogleService-Info.plist,并在Shell脚本中更改了目录。也许您应该这样做
对于终端命令,最好将必要的文件拖放到终端中,然后复制所选路径
/ path_to_pods / FirebaseCrashlytics / upload-symbols -gsp /path_to_google_service/GoogleService-Info.plist -p iOS / path_to_dSYMs
答案 5 :(得分:2)
相信我,我花了一天但没有任何效果,
令人惊讶的是,很少有解决方案适用于我同事的一些项目,但我使用的是 Big Sur 和 Xcode 12.2,但对我没有任何作用。
尝试 1:firebase 文档中提到的每个步骤。
尝试 2:尝试通过传递 for
但是,运气不好,
以下技巧对我有用,
第 1 步:确保您使用的是最新的 firebase crashlytics 版本,提供项目路径并启动 cmd for (i in seq_along(mtcars_split)) {
plot_function(mtcars_split[[i]], names(mtcars_split)[[i]])
}
我使用的是 Firebase Crashlytics 版本 4.0.0-beta.1,但在 pod 更新后它是 8.2.0
第 2 步:进入构建阶段,在编译包资源path_to_pod_firebasecrshlytics/uploadsybol -gsp path_to/GoogleService-Info.plist -p ios path_to/dSYMs
第 3 步:添加 DYSM 脚本,pod update
第 4 步:构建项目;
第 5 步:运行项目并停止或与故事板断开连接
第 6 步:使崩溃 2-3 次并等待 2-5 分钟。
干杯,一切就绪!
答案 6 :(得分:1)
您的Google服务路径似乎已关闭。这是我的构建阶段的示例,该阶段能够成功上传dSYM。我建议再按一次这些说明https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk?platform=ios&authuser=0。
查找/ Users / okodysh / Library / Developer / Xcode / DerivedData / myApp-ftqksfkpdvisbtaozpqzzjiizpfk / Build / Products / Debug-iphonesimulator -name“ myApp.app.dSYM” | xargs -I {} $ PODS_ROOT / FirebaseCrashlytics / upload-symbols -gsp /Users/okodysh/Desktop/iOSApps/myApp/myApp/GoogleService-Info.plist -p ios {}
答案 7 :(得分:0)
最后,我已经弄清楚了,并写了一个shell
脚本来为我处理所有这些事情
答案 8 :(得分:0)
嗯,对我来说什么都没有用,但要改变它:
"${PODS_ROOT}/FirebaseCrashlytics/run"
对此:
"${PODS_ROOT}/FirebaseCrashlytics/run" -gsp "${PROJECT_DIR}/project_main_dir/google-services-files/iOS-GoogleService-Info.plist"
编辑:
对于那些试图遵守iOS的Catalyst的人:
您不必下载两个不同的Google JSON文件。您应该只使用一个(因为您只有一个目标)。如果要上传Mac版本的应用程序,只需转到App Store Connect并为OSX创建新版本(在应用程序的同一页面)
答案 9 :(得分:0)
检查您的完整项目文件夹路径是否包含空格。我通过将我的项目移动到另一个没有空间的文件夹路径来解决它。
答案 10 :(得分:-1)
就我而言,直到我添加以下代码,这些代码都无法正常工作
:"${PODS_ROOT}/FirebaseCrashlytics/run" -gsp "${PROJECT_DIR}/intermediate_folders/GoogleService-Info.plist"
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/intermediate_folders/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
如果不将路径添加到run命令,则构建阶段将永远运行...