标签: bitcode

IOS:xcodebuild命令在Build Settings中禁用bitcode

我想通过终端命令在.xcodeproj的构建设置中禁用Bitcode.我搜遍了所有但只找到了从终端建立或归档项目的命令.能否请举例说明这个命令是什么样的?

谢谢

terminal command xcodebuild ios bitcode

5
推荐指数
1
解决办法
6097
查看次数

SDK不包含bitcode ios

在我的一个项目中,我正在集成 paytab ios sdk,同时发生集成错误

a(PayTabCardReaderViewController.o)' 不包含位码。我尝试启用 bitcode=No

但是在启用 bitcode=no 后,它向我显示了更多 40 个错误,有人知道我们可以仅禁用 1 个 sdk/library 的 bitcode 吗?

错误:a(PayTabCardReaderViewController.o)' 不包含位码。您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或为此目标禁用位码。对于架构 arm64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

sdk objective-c ios arm64 bitcode

5
推荐指数
1
解决办法
4421
查看次数

上传到iTunesConnect时出现突发错误:ITMS-90635无效的Mach-O格式/ ENABLE_BITCODE

上周我能够将我的ipa上传到iTunesConnect就好了.但截至今天,我通过Application Loader上传时收到以下错误:

ERROR ITMS-90635:"无效的Mach-O格式.捆绑中的Mach-O"Application.app/Frameworks/PSPDFKit.framework"与主捆绑中的Mach-O不一致.主捆绑包Mach-O包含armv7(机器代码)和arm64(机器代码),而嵌套束Mach-O包含armv7(bitcode和机器代码)和arm64(bitcode和机器代码).验证平台的所有目标是否具有一致的值ENABLE_BITCODE构建设置."

我知道这里提出的解决方案: Xcode - 错误ITMS-90635 - 捆绑中的Mach-O无效 - 提交到App Store和许多其他人.

但我不知道如何将任何建议的解决方案应用于Xamarin iOS项目.我没有使用任何pod,而是使用PSPDFKit的Binding库,我已经按照官方文档https://pspdfkit.com/guides/ios/current/other-languages/xamarin/中的描述创建了它.

据我所知,有两种方法让我去,要么在我的项目中启用bitcode(我不知道该怎么做),要么在PSPDFKit的绑定项目中禁用bitcode(我也没有想法如何去做).

我很感激任何帮助或主张.

itunesconnect ios xamarin bitcode

5
推荐指数
1
解决办法
2971
查看次数

带有位码的 xcodebuild 不起作用

我正在使用以下命令构建我的 FAT 框架以使用 bitcode进行分发

xcodebuild -sdk iphoneos CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO xcodebuild -sdk iphonesimulator CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO lipo -create /path/to/iphone/framework /path/to/simulator/framework -output /path/to/universal/framework

我的构建标志是这样的:

在此处输入图片说明

但是当我使用 bitcode 将框架集成到不同的项目中并使用以下方法对其进行存档时:

xcodebuild -workspace /path/to/MyApp/app.xcworkspace -scheme app_scheme archive -archivePath /path/to/MyArchive/MyApp.xcarchive | xcpretty
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

?  ld: bitcode bundle could not be generated because '/path/to/my/app/Frameworks/MyFramework.framework/MyFramework' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build for architecture armv7

?  clang: error: linker command failed with exit code 1 …
Run Code Online (Sandbox Code Playgroud)

llvm xcodebuild ios bitcode

5
推荐指数
0
解决办法
1207
查看次数

Xcode 构建仅在设备上而不是在模拟器上为框架启用 BITCODE

'Enable Bitcode' set to YES在构建设置中,也尝试过 'fembed-bitcode'在“自定义编译器标志”中进行设置。当我在选择“设备”的情况下构建项目时,并从命令行尝试命令

otool -l /path-Containing-Release-iphoneos/Framework.a  | grep bitcode
Run Code Online (Sandbox Code Playgroud)

我得到预期的结果如下

sectname __bitcode.
Run Code Online (Sandbox Code Playgroud)

但是使用相同的构建设置,如果我选择任何模拟器,例如:iPhone6S(10.2) 而不是 Device 并构建项目,并运行相同的命令

 otool -l /path-Containing-Release-iphonesimulator/Framework.a  | grep bitcode
Run Code Online (Sandbox Code Playgroud)

它在里面找不到任何位码。

这种行为的任何原因?请注意,在选择 Device/Simulator 的情况下构建项目时,Architecture 和 ValidArchitectures 未受影响

xcode x86-64 i386 ios bitcode

5
推荐指数
0
解决办法
303
查看次数

Xcode 9.3 无法将构建提交到 App Store

我刚刚更新到 Xcode 9.3 并且在将我的应用程序提交到应用程序商店时遇到以下问题:

无效的捆绑包 - 无法处理应用程序,因为在提交中检测到不允许嵌入位代码的选项。您可能没有使用 Xcode 中提供的工具链构建应用程序。使用最新的 GM Xcode 重建整个应用程序并再次提交应用程序。

我已经仔细检查过所有链接到我的项目的框架,并且它们都是在启用位码的情况下编译的。这些框架中只有一个是 Carthage 框架,我确保它是使用carthage update.

我完全被难住了,不知道还能尝试什么。提前感谢您的帮助!

xcode ios bitcode app-store-connect

5
推荐指数
1
解决办法
1231
查看次数

如何禁用 Carthage 依赖项上的 Bitcode

如何在启用 Bitcode 的依赖项上禁用 Bitcode?

这个问题与问题“ Bitcode disabled on Carthage dependency ”相反。不幸的是,虽然OP给出的答案使用了一个很好的技巧,通过删除项目文件中的所有实例,但在丢失的地方添加该行是不适用的。ENABLE_BITCODE = NO;

ios xcode-project carthage bitcode

5
推荐指数
1
解决办法
520
查看次数

bitcode 是否支持弱链接第三方框架?

问题在标题中简单说明。这是我的设置:

构建一个动态框架,可选择链接(弱链接)到 GoogleInteractiveMediaAds.framework。对于使用我的框架的应用程序,GoogleInteractiveMediaAds 是一个可选的依赖项,如果没有它,框架也能正常工作。这是目前工作。

然而,当尝试从位码重建时会出现问题,这通常发生在选择“从位码重建”导出 Ad Hoc 构建时。位码编译过程失败:

ipatool failed with an exception: #<CmdSpec::NonZeroExitException: $/Applications/Xcode.app/Contents/Developer/usr/bin/bitcode-build-tool ...
Run Code Online (Sandbox Code Playgroud)

并深入查看日志文件,我找到了错误描述:

Failed to resolve linkage dependency MyFramework arm64 -> @rpath/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds: Could not resolve @rpath in @rpath/GoogleInteractiveMediaAds.framework/GoogleInteractiveMediaAds from MyFramework
error: GoogleInteractiveMediaAds not found in dylib search path
Run Code Online (Sandbox Code Playgroud)

注意:GoogleInteractiveMediaAds.framework 确实包含位码。

显然,这个错误是通过不选择“从位码重建”来避免的。如果我要回答我自己的问题,我会说,不,看起来从 bitcode 编译时,您不能使用弱链接框架。仅仅是因为 bitcode 编译步骤试图链接到未包含在应用程序目标中的框架。但是,我无法找到任何关于使用位码弱链接的官方文档,或者任何相关的 StackOverflow 答案,所以我不确定我是否遗漏了什么,或者是否有一些相关的编译器/链接器设置我很想让它发挥作用。

frameworks llvm weak-linking ios bitcode

5
推荐指数
1
解决办法
366
查看次数

使用“-lto-embed-bitcode”提取嵌入的 LLVM 位码

目标:从 ELF 二进制文件中提取完整程序(合并)的 LTO 后位码。

该程序恰好是用 Rust 编写的,但我认为这不是一个关键的细节。

我可以.llvmbc使用以下 Cargo 调用将 Rust 程序编译为 ELF 二进制文件,其中包含一个部分:

RUSTFLAGS="-C linker_plugin_lto -C linker=clang -C link-arg=-fuse-ld=lld -C link-arg=-Wl,--plugin-opt=-lto-embed-bitcode=optimized" \
    cargo build --release
Run Code Online (Sandbox Code Playgroud)

然后我就可以用来readelf -S | grep llvmbc验证该部分是否存在。确实如此。高超!

我现在想提取完整程序的 LTO 后位码并反汇编它:

$ objcopy target/release/world --dump-section .llvmbc=llvm.bc
$ llvm-dis llvm.bc
LLVM ERROR: Invalid encoding
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llvm-dis llvm.bc
 #0 0x000055c06f7ae78c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/vext01/research/yorick/llvm-project/inst/bin/llvm-dis+0x1b578c)
 #1 0x000055c06f7ac6e4 llvm::sys::RunSignalHandlers() (/home/vext01/research/yorick/llvm-project/inst/bin/llvm-dis+0x1b36e4)
 #2 …
Run Code Online (Sandbox Code Playgroud)

llvm rust lto lld bitcode

5
推荐指数
0
解决办法
1087
查看次数

无法在启用 Bitcode 的情况下构建 Webrtc

我正在尝试重建启用 Bitcode 的 WebRTC iOS 框架,但它不起作用,它给了我错误。错误消息是

clang++:错误:未知参数:'-ffile-compilation-dir=。'

clang++:错误:-fembed-bitcode 不支持 -gdwarf-aranges

如果我在没有位码启用 true 的情况下构建它,那么它就可以工作。谁能知道为什么我会遇到这个问题?我的Xcode版本是12.5.1

ios webrtc bitcode webrtc-ios

5
推荐指数
1
解决办法
1726
查看次数