原文网址:http://www.voidcn.com/blog/GrowingGiant/article/p-5012705.html

关于bitcode的介绍,直接看下边两篇:

理解Bitcode:一种中间代码

Xcode 7 Bitcode的工作流程及安全性评估

大牛们已经把bitcode说的很清楚了,我结合自己的实践梳理出以下流程:

主工程引用静态库有两种形式(参考:在iOS中创建静态库

①:代码依赖

②:引用.a

对应的,让静态库支持bitcode也有不同的地方。

先来看第一种:直接上图配置

注意代码依赖的工程配置

主工程的头文件搜索路径配置

打开子工程的bitcode

看到第三张图片,就能看出来,代码依赖可以在主工程中动态修改。

再来看第二种:

打开.a工程的bitcode

添加到主工程中

配置主工程头文件

这个时候,build一下没发现什么问题,但是如果archive就会报错:

ld: bitcode bundle could not be generated because '/Users/xxx/work/test-demo/bitcode/BitcodeTest/BitcodeTest/TestLibA/libTestLibA.a(TestLibA.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决这个错误就需要在.a工程中添加一下配置:

other c flags 添加-fembed-bitcode,之后在run一下生成新的.a,然后替换主工程中的.a即可

然后在对主工程archive,即可:

现在系统的总结下:

一、代码依赖

方便控制,但是每次build花费的时间就长了。

如果碰到静态库有分类,报错unregistered selector ....,只需要在主工程other link flags 添加 -all_load即可。

二、.a引用

.a稍微复杂了点,不过一般引用的.a都是第三方的,也无需考虑太多。如果是自己制作,就参考上边。

对于.a引用还有另一个问题,如何判断.a支持bitcode?

进入到.a所在的目录,
使用以下命令:
otool -arch armv7 -l  xxxx.a | grep bitcode
otool -arch arm64 -l  xxxx.a | grep bitcode 
 
能看到bitcode字样,至少有支持bitcode的可能,为什么说可能呢,最后要看archive

实践:

二、

lipo -info xxxx.a
lipo -thin arm64 xxxx.a -output xxxx-arm64.a
ar -x  xxxx-arm64.a //这一步完成会得到一个.o文件,共下部使用
otool -l xxxx.o | grep bitcode

通过这两种方法,能方便的查看.a是否支持bitcode.

最能直接检验的方法就是archive。在最后打包的时候能看到如下就说明完全没有问题了。

 

【转】iOS bitcode实战 -- without full bitcode的更多相关文章

  1. Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件)

    Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件) 前文介绍了通过 Safari 的 Web检查器,可以看到控制台输出的信息.但有时这样调试代码不太方便,如果在 ...

  2. Cordova - 使用Cordova开发iOS应用实战2(生命周期、使用Safari调试)

    Cordova - 使用Cordova开发iOS应用实战2(生命周期.使用Safari调试) 前文我们创建了一个简单的Cordova项目,结构如下: 1,Cordova生命周期事件 (1)device ...

  3. Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)

    Cordova - 使用Cordova开发iOS应用实战1(配置.开发第一个应用) 现在比较流行使用 html5 开发移动应用,毕竟只要写一套html页面就可以适配各种移动设备,大大节省了跨平台应用的 ...

  4. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  5. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  6. 包建强的培训课程(11):iOS Runtime实战

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. rabbitmq在ios中实战采坑

    1. rabbitmq在ios中实战采坑 1.1. 问题 ios使用rabbitmq连接,没过多久就断开,并报错.且用android做相同的步骤并不会报错,错误如下 Received connecti ...

  8. iOS逆向实战与工具使用(微信添加好友自动确认)

    iOS逆向实战与工具使用(微信添加好友自动确认) 原文链接 源码地址 WeChatPlugin-iOS Mac OS 版微信小助手(远程控制.消息防撤回.自动回复.微信多开) 一.前言 本篇主要实现在 ...

  9. Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

    Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序.自从Xamarin问世后.C#的作用就发生了非常大的变化 ...

随机推荐

  1. 讲解Python中的递归函数

    本文的最重要的收获在于:尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式. 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例 ...

  2. excel模版从xp复制到win7系统后出现错误 运行时错误 '429' ActiveX 部件不能创建对象

    运行时错误 '429' ActiveX 部件不能创建对象Set objDialog = CreateObject("UserAccounts.CommonDialog")解决办法把 ...

  3. 了解less跟sass

    less官网:http://www.bootcss.com/p/lesscss/ LESS编写技巧分享:http://www.xuanfengge.com/less-writing-skills-sh ...

  4. 横向滑动的HorizontalListView滑动指定位置的解决方法

    项目中用到了自定义横向滑动的控件:HorizontalListView,点击其中一项,跳转到另外一个大图界面,大图界面也是HorizontalListView,想使用setSelection方法设定 ...

  5. 自己封装的一个java图片验证码

    验证码生成器: package com.lz.Tools; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; ...

  6. linux下使用shell查看apache IP访问量

    1.查看TCP连接状态 netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn netstat -n | awk '/^tcp/ {++S[$NF]} ...

  7. iOS开发网络篇—搭建本地服务器

    iOS开发网络篇—搭建本地服务器 一.简单说明 说明:提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提示:提前准备好的软件 apache- ...

  8. 关于MediaPlayer的详细介绍

    1)如何获得MediaPlayer实例:可以使用直接new的方式:MediaPlayer mp = new MediaPlayer();也可以使用create的方式,如:MediaPlayer mp ...

  9. UIView及其子类

    一.UI概述 UI(User Interface):用户界⾯,用户能看到的各种各样的⻚面元素. iOS App = 各种各样的UI控件 + 业务逻辑和算法 二.UIView 在手机上显示的内容都是UI ...

  10. iOS 中捕获程序崩溃日志

    iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59) 转载▼     iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下 ...