iphone 静态库读取资源文件

在制作iphone静态库中并不能包含资源文件,虽然我们将资源文件(.png文件)拷贝到静态库工程中,但实际上这些.png是不会添加到target的,也就是说编译结果中并不包含这些资源,因此如果此时调用静态库,所有的资源(字符串、图片)都是缺失的。
我们可以把资源建立成单独的束(Bundle)。
新建工程“ Mac OS X -> Framework & Library -> Bundle ”,命名为:yhyLibraryBundle。
然后把上面.png文件拷进Resouces中去。编译,生成yhyLibraryBundle.bundle文件。
返回静态库工程,新建一个类:Utils 。
编辑Utils.h:
[pre]

  1. #define MYBUNDLE_NAME @ "yhyLibraryBundle.bundle"  
  2. #define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME]   #define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]  
  3. NSString * getMyBundlePath( NSString * filename);  

[/pre]编辑Utils.m:
[pre]

  1. #import "Utils.h"  
  2. NSString* getMyBundlePath( NSString * filename)   {  
  3. NSBundle * libBundle = MYBUNDLE ;   if ( libBundle && filename ){  
  4. NSString * s=[[libBundle resourcePath ] stringByAppendingPathComponent : filename];   NSLog ( @"%@" ,s);  
  5. return s;   }  
  6. return nil ;   }  

[/pre]函数getMyBundlePath可以取得束yhyLibraryBundle中具体资源的绝对文件路径,如:
[pre]

  1. /Users/kmyhy/Library/Application Support/iPhone Simulator/4.2/Applications/8213652F-A47E-456A-A7BB-4CD40892B66D/yhyLibTest.app/    yhyLibraryBundle.bundle/Contents/Resources/radio.png  

[/pre]同时,修改CheckButton.m中的代码,导入Utils.h头文件,把其中获取图片的代码由imageNamed修改为imageWithContentsOfFile,如:
[pre]

  1. [ icon setImage :[ UIImage imageWithContentsOfFile : getMyBundlePath ( checkname )]];  

[/pre]即通过绝对路径读取图片资源。

 

在运行生成.a文件之后不能通用模拟器和真机,通用的做法为:

 

可以使用命令行工具lipo将适用于真机与模拟器的静态库合二为一,操作如下

user#lipo -create /ospath/libname.a /simulatorpath/libname.a -output /allInOnelibName.a 即可

用如下命令可以看到合并后静态库支持的cpu架构信息

user#lipo -info /allInOnelibName.a

Architectures in the fat file: /Users/ipi/Desktop/libDemoLib_1.a are: armv7 i386

 

**这种做法缺点:通用静态库太大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值