在 Xcode 之外自动上传 NewRelic dSYM?

Automate NewRelic dSYM upload outside Xcode?

我的 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 build

运行

如何从我的标准部署脚本中执行此操作?我不想将其添加为 XCode post-编译 运行 脚本或通过网站手动上传。

经过一些研究,我了解到所提供的 newrelic_postbuild.sh 脚本只是简单地压缩 dSYM 文件夹并使用 curl 脚本上传它。

Fastlane 应该已经完成​​了健身房动作的第一部分。只需在正常的 Fastfile 构建通道中指定输出目录即可。

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 构建设置,并且我们可以避免执行不必要和冗余的脚本代码。