1

我的tvOS应用程序在 Apple 的服务器端验证中反复失败,并通过电子邮件通知说:

无效的可执行文件 - 可执行文件“VPK_FULL_TV.app/VPK_FULL_TV”不包含位码

我使用了这里描述的方法:How to check if a framework is BITCODE support for Xcode7 and my all libs/frameworks print out at least one line with segname __LLVM.

  1. 我想知道,这个测试有多足够otool?是否会发生测试打印出该行segname __LLVM但某些功能在没有位码的情况下仍被遗漏的情况?

  2. 还有另一种测试位码完整性的方法吗?

  3. 我还在标准库上尝试了这个测试,例如/Applications/Xcode-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib/libresolv.9.tbd,但打印 NOsegname __LLVM行,因此表明没有包含位码。我应该是吧?这个 .tbd 库到底是什么?

otool顺便说一句,如果您发现它有用,这里有一些运行的快捷方式:

find . -name '*a' -type f -exec ./test_bitcode.sh {} \;

test_bitcode.sh

echo ""
echo "***** TESTING $1"
otool -l $1 | grep __LLVM | head -n1
4

1 回答 1

0

检查您的库是否没有strip -x使用位码构建。

我发现 strip 从库中删除了位码

也有点像你的脚本: Bitcode Checking Script:

https://github.com/danoli3/Bitcode-Check-Script

用法: bitcodeCheck "boost_system.a"

结果:

------------------
BITCODE=YES for: boost_system.a
------------------

它使用Apple指定的基础otool__LLVM

于 2015-11-12T12:34:21.900 回答