十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在我们使用第三方框架时,常常看到XXX.bundle的文件。
莘县网站建设公司创新互联,莘县网站设计制作,有大型网站制作公司丰富经验。已为莘县上1000家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的莘县做网站的公司定做!
我们找到该文件,显示包内容,大致看到很多资源文件:图片、配置文本、XIB文件……
什么是Bundle文件?
简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个Bundle文件。方便在其他项目中引用包内的资源。
Bundle文件的特点?
Bundle是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的2进制数据。
bundle 资源包 是静态的,不参与项目的编译,所以不占包的大小,如果bundle里面要包含xib,那么需要创建工程的形式,将xib 序列化为静态nib。bundle 里面是不能加入二进制文件的。
分别选择真机模式,和模拟器模式进行编译,编译通过后, command + ,
点击该路径,找到bundle文件
如果要打包上线,可能会有些问题,再针对不同的问题去解决就行。我还没有试,如果有问题,望指出。
一般情况下,使用 bundle 文件来存档 SDK 使用的资源文件,如:图片、多语言文件、storyboard编译文件等。
新建文件夹
修改文件名,后缀为 .bundle:
这样,就创建了一个 bundle 文件,将资源放置进去就可以使用了。
创建 bundle 工程
取名为 NiceBundle,此处的名字,即后面编译得到的 bundle 的名字
为方便管理,将工程跟 Framework 工程放置到一起
将支持类型设置为 iOS
设置最低支持版本和支持设备类型
编译得到 bundle 文件
导入图片,编译一下
可以发现,在 bundle工程中,图片放置在 image 文件夹下,编译后出现在 NiceBundle.bundle 根目录下,说明就算嵌套文件夹,编译后的资源文件都会在 bundle 文件根目录下。这个很重要,涉及到后面我们读取 bundle 文件的路径问题。
同 Framework 工程一样,为方便管理,可以将其添加到 xcworkspace 中。
将 NiceBundle.bundle 导入 Demo 工程,编译,查看 bundle 文件处于应用的哪个位置
由此,可以根据 bundle 在使用时的路径,得到该如何读取的方式。
可以看到,通过上面的方式,读取图片成功
同理,其它类型的文件,也可以通过上面的方式进行读取。
看懂请随手点赞,朋友们!????????????
创建文件夹TestBundle,并改名为TestBundle.bundle。然后再把资源文件放入该Bundle就可以了。
使用此方式的目的:可通过Xcode管理资源文件,且可多Target管理。
在 Build Settings 中修改 Base SDK 为 iOS
在 Build Settings 中修改 Versioning System 为 None
此处需要特别注意,一定要确认,如果设置不对,会导致Bundle中包含了可执行文件,会导致上架AppStore被拒。
在 Build Settings 中删除 Installation Directory 后面对应的路径。
在 Build Settings 中删除 Code Signing Identity 后面对应的路径。(先选择Other,再删除即可)
在 Build Settings 中设置 iOS Deployment Target 为 iOS9.0
一般情况下设置为最小的即可。
在 Build Settings 中设置 Skip Install 为 NO
在 Build Settings 中设置 COMBINE_HIDPI_IMAGES 为 NO
在 Info.plist 中删除 Executable file
确认生成的Bundle的 Info.plist , Bundle OS Type code 值是否为 BNDL ,如不是,手动修改为 BNDL
相信各位读了之前的两篇文章,对pods的使用已经相当熟练了。不过在纷繁复杂的实际使用场景下,可能还是会遇到一些问题。本文就结合自己的实践经验,做一些快问快答,希望大家能多多补充交流。话不多说,那我们就即刻开始吧!
pod系列文章
Cocoapods,让iOS开发更简单(一):走近Cocoapods
Cocoapods,让iOS开发更简单(二):创建私有库
Cocoapods,让iOS开发更简单(三):实践经验汇总
一文带你快速分清静态库-动态库-Framework
一般推荐使用指定版本或范围版本号,以确保依赖的稳定性。
总结 :能用pod install解决问题的,就不要用pod update。因为pod update会把依赖库全部检查一遍,不仅慢有时候还会出现坑。
忽略Pods警告,有些第三方Pod集成进来会有一大堆警告信息,在Podfile中对应的target或分组下加上关键字inhibit_all_warnings!就可以把警告忽略。
作用:
在pods中用frameworks替代.a静态库。
场景:
swift项目pods默认开启(use_frameworks!),OC项目pods默认关闭(#use_frameworks!),同时需满足以下两点,
解析:
swift工程依赖了OC工程的话,需要use_modular_headers!
示例:
为某个 Pods 使用模块化标头,可以使用以下语法:
pod 'TestPodLib', :modular_headers = true
另外,当全局使用 use_modular_headers! 属性时,同时还可以使用以下方法从模块化标头中排除特定的Pod:
pod 'TestPodLib', :modular_headers = false
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
常用的方式调用pod中的素材是不生效的,因为默认是从mainBundle中读取的,如
打在pod中的素材已经不在mainBundle中而在对应组件下的bundle 里面,所以应该这么调用:
在用CocoaPods集成第三方库之后,默认情况下,使用类似#import XXX/YYY.h的方式引入第三方库的头文件。
pod search只会搜索本地缓存的库,如果想搜索到最新的第三方框架或者某个框架的最新版本,必须先使用pod repo update。
下面具体步骤如下...
1.创建Bundle资源包
2.新建一个Project