尽管可以找到 none,但由于 LLVM 工具符号或代码覆盖,构建被 Apple 拒绝

Build Rejected by Apple due to LLVM instrument symbols or code coverage though none can be found

我最近向 TestFlight 提交了一个构建,但由于以下错误而被拒绝:

Invalid Bundle - Disallowed LLVM instrumentation. Do not submit apps with LLVM profiling instrumentation or coverage collection enabled. Turn off LLVM profiling or code coverage, rebuild your app and resubmit the app.

Apple 的 Technical Q&A 建议 运行 使用以下命令来查找构建是否启用了任何 LLMV Instrumentation 符号或代码覆盖率,但结果是否定的。

$ nm -m -arch all <PathToArchive>/Products/Applications/<AppName>.app/<AppBinary> | grep gcov

$ otool -l -arch all <PathToArchive>/Products/Applications/<AppName>.app/<AppBinary> | grep __llvm_prf

一个有用的 gist by carlossless 也没有显示任何 LLMV 检测符号。有什么解决办法吗?

问题是应用中使用的内部 SDK pod 是在没有

的情况下构建的

GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=NO

CLANG_ENABLE_CODE_COVERAGE=NO

xcodebuild 中的标志。当我们使用以下命令构建 SDK 时,构建被 Apple 接受:

xcodebuild -workspace "${FRAMEWORK_NAME}.xcworkspace" -scheme "${FRAMEWORK_NAME}" -configuration "${CONFIGURATION}" -arch arm64 -arch armv7 -arch armv7s only_active_arch=no CLANG_ENABLE_CODE_COVERAGE=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=NO BITCODE_GENERATION_MODE=bitcode defines_module=yes -sdk "iphoneos" -derivedDataPath "${OUTPUT_DIR}"

这个article by Carlossless里面已经解释的很好了。