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);

    return s;

  }

  return nil ;

}

 **然后替換靜態庫工程中對應的資源名稱為此處定義的函數即可

 **在調用靜態庫的項目中只需加入靜態庫,資源束,頭文件即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM