前言
在上篇文章中介紹了Cocoapods管理本地代碼脱衙,今天我們來(lái)說(shuō)下,管理.a,.framework例驹。
管理.a庫(kù)
1捐韩、首先我們建立一個(gè)static library的工程TestLib。
2鹃锈、新建TestLib.h/.m荤胁,添加test方法。
3屎债、生成通用的.a庫(kù)仅政。
在build phase中添加runscript。腳本如下:
# define output folder environment variable
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
# Step 1. Build Device and Simulator versions
xcodebuild -target TestLib ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target TestLib ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
# Step 2. Create universal binary file using lipo
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a"
# Last touch. copy the header files. Just for convenience
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"
cmd+B盆驹,完事圆丹。在products/Debug-universal文件夾中找到生成的通用庫(kù)。
用lipo查看.a庫(kù)所支持的架構(gòu)躯喇。
lipo -info libTestLib.a
Architectures in the fat file: libTestLib.a are: armv7 i386 x86_64 arm64
4运褪、Cocoapods來(lái)管理.a。
跟管理代碼一樣,只需要在podspec里面秸讹,設(shè)置好要暴露的文件即可檀咙。.a也可看做是文件。這里我們把通用.a庫(kù)璃诀,拷到TestLib.h同級(jí)目錄下弧可。主要就是把.a庫(kù),和.h放在某個(gè)目錄中劣欢。目錄結(jié)構(gòu)看起來(lái)是這樣:
5棕诵、生成podspec
Pod::Spec.new do |s|
s.name = "TestLib"
s.version = "0.0.6"
s.summary = "TestLib."
s.homepage = "https://github.com/silan-liu"
s.license = { :type => "MIT", :file => "FILE_LICENSE" }
s.author = { "silan-liu" => "413769707@qq.com" }
s.platform = :ios
s.ios.deployment_target = "8.0"
// 這里是TestLib工程目錄
s.source = { :git => "~/快盤/mycode/TestLib", :tag => s.version }
s.source_files = "**/*.{h}"
// 向外提供的庫(kù)
s.vendored_libraries = "TestLib/libTestLib.a"
s.requires_arc = true
end
6、新建工程來(lái)測(cè)試pod
具體步驟跟上一篇類似凿将,在podfile中填寫podspec的路徑校套,pod install。成功后牧抵,如下圖笛匙。
管理.framework
跟管理.a類似,同樣是生成通用framework犀变。只不過(guò)podspec有點(diǎn)不同妹孙。.a是s.vendored_libraries,.framework是s.vendored_frameworks获枝。
s.vendored_frameworks = 'Test/TestFramework.framework'