iOS 使用 Xcode8 制作動態庫及靜態庫


  在使用第三方 SDK 時,經常遇到他們提供的僅僅只有一個動態或靜態庫,並不能獲取源碼。使用動態庫 FrameWork 或 靜態庫 Lib,可以滿足不想把核心代碼的具體實現向使用者展示,又能避免其他人錯改動代碼。

  一、動態庫 FrameWork 的制作:

  打開 Xcode,選中 Cocoa Touch FrameWork。

  

  新建一個 PublicModel 文件,簡單輸出Log

  

  若這個 PublicManager 文件想要對外公開頭文件。需要

  

 

  然后編譯,得到動態庫 FrameWork

  

  到目前為止,一個簡單的 FrameWork 就制作完成了。接下來就是使用這個 FrameWork 了。

  把 FrameWork 拖進工程。引入 #import <DynamicFrameWorkMake/PublicManager.h>

PublicManager *manager = [[PublicManager alloc] init];
[manager printLog:@"這是一個打印信息"];

  編譯運行,會發現 引入頭文件處有個警告 “Missing submodule 'DynamicFrameWork.PublicManager'”,控制台會報錯:

  

  這時需要在 General Embedded Binaries 中添加制作的 FrameWork。

  

  解決“Missing submodule 'DynamicFrameWork.PublicManager”警告的方法是,在編譯動態庫時,在 DynamicFrameWorkMake.h 文件中,添加 "#import <DynamicFrameWorkMake/PublicManager.h>"

  

  需要注意的是,編譯生成的 FrameWork 跟我們所選的編譯環境有關,如果你選擇的是 模擬器編譯出來的,導入時在真機運行會報錯的,同時也有 Debug 和 Release 模式之分。

  下面可以把真機編譯出來的 FrameWork 和 模擬器編譯出來的進行合並。

  

  打開終端,輸入:

  lipo -create + 模擬器目錄 + 真機目錄 -output 合並后的目錄。

  eg: lipo -create /Users/Robin/Library/Developer/Xcode/DerivedData/DynamicFrameWorkMake-fafcaqoabyywoqfahbpuzhfcltmd/Build/Products/Debug-iphoneos/DynamicFrameWorkMake.framework/DynamicFrameWorkMake /Users/Robin/Library/Developer/Xcode/DerivedData/DynamicFrameWorkMake-fafcaqoabyywoqfahbpuzhfcltmd/Build/Products/Debug-iphonesimulator/DynamicFrameWorkMake.framework/DynamicFrameWorkMake -output /Users/Robin/Desktop/DynamicFrameWork

  如果報錯:error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't move temporary file: /Users/Robin/Desktop/DynamicFrameWork to file: /Users/zhangtibin/Desktop/DynamicFrameWork.lipo (Is a directory)

  

 

 

 

  

 

 

 

 

 

 

 

 

 


免責聲明!

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



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