【问题标题】:tvOS: How to track down: Invalid Executable - The executable 'xy' does not contain bitcodetvOS:如何追踪:无效的可执行文件 - 可执行文件“xy”不包含位码
【发布时间】:2015-10-20 09:19:23
【问题描述】:

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

无效的可执行文件 - 可执行文件 'VPK_FULL_TV.app/VPK_FULL_TV' 确实 不包含位码

我使用了这里描述的方法:How to check if a framework is BITCODE supported for Xcode7 我所有的库/框架都至少打印出一行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 但打印 NO segname __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

【问题讨论】:

    标签: xcode llvm tvos bitcode


    【解决方案1】:

    检查您的库是否不是strip -x 发布使用位码构建的。

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

    也有点像你的脚本: 位码检查脚本:

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

    用法: bitcodeCheck "boost_system.a"

    结果:

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

    它使用 Apple

    指定的otool__LLVM 的基础

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 2018-12-28
      • 2013-12-25
      相关资源
      最近更新 更多