Android第二十三期 - 256k的ListView下拉刷新和滚动加载数据
代码已经整理好。效果如下: 地址:http://down.51cto.com/data/1887400 本文转自 吴雨声 51CTO博客,原文链接:http://blog.51cto.com/liangxiao/1566819,如需转载请自行联系原作者
网上流传了太多关于合并lib库的方法,自己也尝试过,但大多失败。有感于这种急于解决问题,经过百般尝试后依旧无果的无奈心情,小翁在这里用一个实例来完整阐述如何在mac中合并lib静态库。
这里以移动广告平台多盟的三个lib库为例子,之所以以此为例子,是因为我也遇到了库冲突的问题,所以才有了本文的内容。
本文的目标:合并libDomobOfferWallSDK.a、libDomobAdWallCoreSDK+UI.a、libDomobAdSDK.a
Let`s begin!
1.依次查看所有需要合并的lib库所支持的框架类型。i386表示支持iphone模拟器,armv6应用在iphone 3gs上,armv7应用在iphone4,armv7s应用在iphone4s以及iphone5,arm64应用在最新的iphone5s上。
|
1
|
lipo -info libDomobOfferWallSDK.a输出是:Architectures in the fat file: libDomobOfferWallSDK.a are: armv7 armv7s i386
|
|
1
|
其他同理
|
看到红色粗体的fat了吗,fat file表示这个库里面合并了多于1个框架。
2.将lib库拆分出armv7、armv7s、i386类型的.a:
|
1
|
lipo -extract_family armv7 -output libDomobOfferWallSDK_arm.a libDomobOfferWallSDK.a
|
很多人会以为上面这条命令就可以一步到位分离出armv7版本,因为你显式地指出armv7了。但是,你错了。libDomobOfferWallSDK_arm.a仍旧是fat file,也就是里面含有了arm所有版本,这也是网上很多版本的教程错误的原因。如果误以为libDomobOfferWallSDK_arm.a只含armv7一个版本,则下一步的解.o操作就会失败,会提示"is a fat file"。小翁认为,最保险的做法是每次lib变化时都用lipo -info查看一下。现在我们查看一下libDomobOfferWallSDK_arm.a库:
|
1
2
|
lipo -info libDomobOfferWallSDK_arm.a
打印出:Architectures in the fat file: libDomobOfferWallSDK_arm.a are: armv7 armv7s
|
接着用如下命令进一步分离出单独的armv7、armv7s版本:(非常重要的步骤)
|
1
|
lipo libDomobOfferWallSDK_arm.a -thin armv7 -output libDomobOfferWallSDK_armv7_final.a
|
|
1
|
lipo libDomobOfferWallSDK_arm.a -thin armv7s -output libDomobOfferWallSDK_armv7s_final.a
|
而对于i386则不用上述那么麻烦,直接用第一句-extract_family指令就能分离出只含i386版本的库:
|
1
|
lipo -extract_family i386 -output libDomobOfferWallSDK_i386.a libDomobOfferWallSDK.a
|
经过上面操作后,我们得到了第一个待合并库libDomobOfferWallSDK.a 的armv7、armv7s、i386三个版本的库。剩下的两个待合并库同理。
3.分离出目标文件(.o)
进行实质上的合并。xcode里提示duplicate symbol都是说***.o与***.o冲突。注意,只有非fat file,也就是只含有单种版本的lib库才能分离出.o文件
|
1
2
3
|
ar -x ../libDomobOfferWallSDK_armv7_final.a
ar -x ../libDomobAdWallCoreSDK+UI_armv7_final.a
ar -x ../libDomobAdSDK_armv7_final.a
|
这一步最好是在lib*_final.a的同级目录下新建一个文件夹,专门用来接收解压出来的.o文件。同种版本(如armv7)的都解压到这个文件夹中,相同的.o文件他会自己覆盖掉。
4.从.o文件中合并成静态库:
|
1
|
libtool -
static
-o ../libDomobUniversal-armv7.a *.o
|
armv7s、i386版本同理。
5.合并成最终的通用静态库:
|
1
|
lipo -create -output libDomobUniversal.a libDomobUniversal-i386.a libDomobUniversal-armv7.a libDomobUniversal-armv7s.a
|
本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/p/3800856.html,如需转载请自行联系原作者
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。