转载

iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案

在开发中,不免需要引入第三方库,但是因为库的问题,会发生很多错误。如:

1.因为一些第三方库不包含bitcode就会报错:

一次使用xcode7.1时,发现编译失败,报错信息:

umeng message.sdk does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library from the vendor, or disablebitcode for this target. for architecture arm64

说我导入的友盟推送sdk没包含bitcode.

查了很多资料:

bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化程序的二进制文件,而不需要重新提交一个新的版本到App store上。当提交程序到App store上时,Xcode会将程序编译为一个中间表现形式(bitcode)。然后App store会再将这个botcode编译为可执行的64位或32位程序。

其英文:

Bitcode is an intermediate representationof a compiled program. Apps you upload to iTunes Connect that contain bitcodewill be compiled and linked on the App Store. Including bitcode will allowApple to re-optimize your app binary in the future without the need to submit anew version of your app to the store.

Bitcode. When you archive for submission tothe App Store, Xcode will compile your app into an intermediate representation.The App Store will then compile the bitcode down into the 64 or 32 bitexecutables as necessary

You must rebuild it with bitcode enabled(Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, ordisable bitcode for this target. for architecture arm64

要么让第三方库支持,要么关闭bitcode选项。

实际上,在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。不过,我们现在需要考虑的是三个平台:iOS,Mac OS,watchOS。

对于iOS,bitcode是可选的;对于watchOS,bitcode是必须的;而Mac OS是不支持bitcode。

如果我们开启了bitcode,在提交包时,下面这个界面也会有个bitcode选项:

iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案

通过以上方法可以通过编译,但是这样就无法archive了,如果想要提交APP store可以通过iTunes获取ipa包,通过xcode自带的提交工具上传即可。

2.使用cocoapods导入开发包真的很方便,但是有很多诡异的地方,在使用pod install开始导入时,会发生一些警告:

iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案

说实话这个警告一开始我并没管,而是在项目里修改错误,但是修改了好久,还是这样的错误,真的越改越错,方法也无所不用极其。

一开始出现的错误大致是:not found find _liPOds

最终在网上发现了:

(1)打开工程所在文件夹,找到.xcodeproj的文件,然后显示包内容,找到project.pbxproj文件,如下:

iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案

(2)用文本编辑器打开,然后查找`OTHER_LDFLAGS`这个东西,把有关这个东西的地方都删掉(应该有四处),如下图:

iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案

(3)删除完以后,在终端重新update一下,如下(就没有下面两个黄叹号了,解决完毕)

iOS开发:bitcode介绍和使用cocoapods出现“target overrides the `OTHER_LDFLAGS`……”的解决方案

(4)在编译运行我们的工程,编译通过~

正文到此结束
Loading...