我的iOS项目使用New Relic进行跟踪。 NewRelic 需要上传 dSYM 文件。
https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/configuration/upload-dsyms-bitcode-apps
我想通过 Fastlane 自动化该过程,但提供的脚本抱怨:
./NewRelicAgent.framework/Versions/A/Resources/newrelic_postbuild.sh 必须从 XCode 版本运行
如何从标准部署脚本中执行此操作? 我不想将其添加为 XCode 编译后运行脚本或通过网站手动上传。
经过一番研究,我了解到提供的newrelic_postbuild.sh脚本只是压缩 dSYM 文件夹并使用 curl 脚本上传。
快车道应该已经完成了健身房动作的第一部分。 只需在正常的快速文件构建通道中指定输出目录即可。
gym({output_directory: "./build")
执行时,上述操作会将符号文件转储到:./build/HelloWorld.app.dSYM
.zip要上传它,请将其添加到变量并执行以下操作:
NEWRELIC_URL="https://mobile-symbol-upload.newrelic.com/symbol"
NEWRELIC_KEY = "ABCd3fgH1JkLmN0PqRsTuVW8Yz"
DYSM_ZIP_FILE = "./build/HelloWorld.app.dSYM.zip"
Dir.chdir("..") do
sh "curl -F dsym=@"#{DYSM_ZIP_FILE}" -H "x-app-license-key: #{NEWRELIC_KEY}" "#{NEWRELIC_URL}""
end
那就行了。 如果您只想从 bash 脚本中执行此操作,则该命令将是:
curl -F dsym=@"${DYSM_ZIP_FILE}" -H "x-app-license-key: ${NEWRELIC_KEY}" "${NEWRELIC_URL}"
这种方法的好处是,我们不必用额外的脚本来混淆我们的 Xcode 构建设置,并且可以避免执行不必要和冗余的脚本代码。