将Xcode更新到版本8.3后,我收到此错误:
error: Invalid bitcode signature
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我的项目甚至没有启用Bitcode.
我怎样才能解决这个问题?
我有一个由其他公司建立的静态库.我想知道它是否是一个包含bitcode的静态库,哪个命令可以在终端中检测到它?
我正准备通过Test Flight进行临时分发的应用程序.我已经(成功)完成了这篇Ray Wenderlich文章中的所有准备步骤(https://www.raywenderlich.com/48750/testflight-sdk-tutorial),我对证书,App ID和供应配置文件均已正确创建且处于正常工作状态.我正处于您在Xcode中存档项目的步骤.我在归档过程中选择了这些设置:
我选择出口:
我选择"Save for Ad Hoc deployment",因为我们的计划是使用Test Flight将应用程序分发给我们的测试人员.我做的认为这是正确的选项(而不是"为企业部署"):
这是默认设置,我没有具体的理由进行更改,尽管我很感激您的任何见解:
同样,这两者的默认选项.默认情况下,第一个未选中,默认情况下会检查第二个:
当我到达这个屏幕时,旋转器看似永远旋转:
问题似乎是,一旦它到达它从bitcode编译的部分,它旋转和旋转,并没有显示完成的迹象.当我构建应用程序以在连接到MBP的设备上运行时,它会快速编译,通常在几秒钟内完成.什么可能导致这种无反应?
我一直在更新一个静态库来支持bitcode,从我的研究中我发现了两种实现方法:
这两个选项有什么区别吗?
我注意到的唯一区别是,通过使用fembed-bitcode,生成的iphonesimulator静态库将在启用完全bitcode的情况下构建(在我的情况下,二进制大小从5MB变为13MB,我可以检查bitcode支持使用otool),这看起来似乎不大使用它有任何不同.
Apple 已弃用 Bitcode,并不再接受从 Xcode 14 开始使用启用 Bitcode 的应用程序的任何提交。我们 PhonePe 禁用了Bitcode并将应用程序上传到 App Store,通过 Xcode 14 连接,现在看到应用程序大小大幅增加。189 MB从(启用 Xcode 13 和 Bitcode)到使用 Xcode 14 ,应用程序的大小几乎增加了一倍342 MB。
有没有人面临类似的问题或有任何解决方案来减小应用程序的大小?
\n\n\n弃用
\n\n
\n- \n
从 Xcode 14 开始,watchOS 和 tvOS 应用程序不再需要位码,并且 App Store 不再接受来自 Xcode 14 的位码提交。
\n- \n
如果项目显式启用位码,Xcode 不再默认构建位码并生成警告\n消息:\xe2\x80\x9cBuilding with\nbitcode 已被弃用。请更新您的项目和/或目标设置以禁用位码。\xe2\x80\x9d 使用位码构建的功能\n将在未来的 Xcode 版本中删除。包含位码的 IPA\n将在提交到 App\nStore 之前删除位码。过去提交的位码的调试符号仍然可供\n下载。(86118779)
\n- \n
由于位码现已弃用,因此 iOS、tvOS 和 watchOS 的构建\n默认情况下不再包含位码。(87590506)
\n
包含我们框架的应用程序会在导出Ad-hoc分发存档时抱怨缺少bitcode.
我已经阅读了Apple在这方面提供的文档 技术说明TN2432.文件列出的可能的根本原因与我们的情景不同.(我们没有使用汇编指令或格式错误的info.plist文件)
我已经在SO上发布了类似的问题
但提供的解决方案似乎不起作用.
我尝试BITCODE_GENERATION_MODE在用户定义的构建设置中添加标记.我还尝试在框架目标中添加-fembed-bitcode-marker&-fembed-bitcodein Other C标志.
我使用建议的命令检查生成的框架中是否存在bitcode段
otool -l -arch arm64 <framework_name> | grep __LLVM
Run Code Online (Sandbox Code Playgroud)
它显示了2个细分
segname __LLVM
segname __LLVM
但在导出档案时,Xcode仍然抱怨缺少bitcode.
我试图在App Store上传应用程序来验证这个问题是否是由Xcode版本引起的(我试过8.3.3.和9.0),但是我收到了关于iTunes Store中的build import错误的电子邮件.
在处理您的iOS应用程序APP_NAME 1.0(4)时,应用程序细化过程中出现错误,您的应用程序无法细化.如果您的应用包含bitcode,则bitcode处理可能失败.由于这些错误,您的应用版本将无法提交审核或放置在App Store中.有关可能有助于解决此问题的信息,请参阅技术说明2432.
PS:禁用bitcode对我们来说不是一个选项,因为主机应用程序需要支持bitcode.
我想建立我的应用程序与启用位码.据我所知,我的所有第三方库依赖项都启用了Bitcode.但是当我进行构建时,我收到此错误:
ld: -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
我该如何解决?
使用Xcode7.当我在模拟器上运行我的应用程序时,我没有错误.当我尝试在真实设备上运行时,我得到了这个:
ld: 'Test-IOS/Pods/Google/Libraries/libGGLAnalytics.a(GGLContext+Analytics.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
我正在构建一个iOS静态库,我想为bitcode提供支持.为了实现这一点,我转到Build settings,搜索"custom compiler flags"并添加-fembed-bitcode.这使用bitcode构建库,在XCode 7下一切正常.
然而,按照上面的方法,我放松了与XCode 6的向后兼容性.据说我必须向我的用户发送2个不同的库版本,一个带有bitcode标志,一个没有,因为不是每个人都升级到XCode 7.
有没有办法让bitcode启用库并具有向后兼容性,而无需发送2个不同的版本?
您好@Vinicius Jarina感谢您的留言.我知道你可以创建一个胖库,我想这是一种常见的做法.到目前为止我所做的是为两种架构构建:
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdK iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
Run Code Online (Sandbox Code Playgroud)
然后调用lipo打包在胖库中,如:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
Run Code Online (Sandbox Code Playgroud)
但是,我现在该怎么办呢?我根据这个链接尝试了类似的东西,但没有运气:
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" OTHER_CFLAGS='-fembed-bitcode' -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" OTHER_CFLAGS='-fembed-bitcode' -target "${FMK_NAME}" -sdk iphoneos
Run Code Online (Sandbox Code Playgroud)
然后像这样创建一个胖lib:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
Run Code Online (Sandbox Code Playgroud)
我如何在我的scipt中包含两者,然后将它们打包到一个胖库中?
我终于成功完成了这项工作,我在这里列出了可能面临同样问题的其他人的解决方案:
xcodebuild -configuration "Release" ENABLE_BITCODE=NO …Run Code Online (Sandbox Code Playgroud)