ios开发之生成,合成通用静态库

ios开发之生成,合成通用静态库

 

1 最初在做基于ios系统开发时使用静态库必须单独使用适合于模拟器的静态库 适合于真机的静态库,两个静态库要频繁切换,

现在,可以使用命令行工具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

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

2 为静态库添加资源:

   在生成静态库时将资源文件放到静态库工程下resources目录下,然后进行编译,但此时不会将资源文件与源码进行打包

  

  两种解决办法:

   a 生成静态库后直接在调用静态库的工程中加入静态库和资源文件,然后一同编译即可

   b 单独建立一个束(bundle),添加所需资源,编译,

   以下代码从自建bundle中提取资源文件:   

#define BUNDLE_NAME @"BundleForLib.bundle"

#define BUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: BUNDLE_NAME]

#define BUNDLE [NSBundle bundleWithPath: BUNDLE_PATH]

NSString* getMyBundlePath(NSString* filename);//获取资源名对应的资源

NSString* getMyBundlePath(NSString* filename)

{

  NSBundle* libBundle = BUNDLE;

  if( libBundle && filename ){

    NSString* s=[[libBundle resourcePath] stringByAppendingPathComponent: filename];

    NSLog(@"%@",s);

    returns;

  }

  returnnil;

}

**然后替换静态库工程中对应的资源名称为此处定义的函数即可

**在调用静态库的项目中只需加入静态库,资源束,头文件即可

posted on 2012-09-13 23:45  kiao295338444  阅读(211)  评论(0编辑  收藏  举报

导航