靜態庫自動打包合併靜態庫指令碼
每次更新sdk都需要重複的在真機下build,在模擬器下build,然後再合併靜態庫;為了解放雙手,嘗試著寫了個指令碼,一步完成以上工作。
#!/bin/bash
#要build的target名
target_Name=XXX
#編譯模式 Release、Debug
build_model=Release
#獲取工程當前所在路徑
project_path=$(pwd)
#編譯檔案路徑
buildPath=${project_path}/build
#匯出sdk地址
exportSdkPath=~/Desktop/${target_Name}-SDK/${build_model}
if [ ! -d $exportSdkPath ]; then
mkdir -p $exportSdkPath;
fi
#真機sdk路徑
iphoneos_path=${buildPath}/${build_model}-iphoneos/lib${target_Name}.a
#模擬器sdk路徑
simulator_path=${buildPath}/${build_model}-iphonesimulator/lib${target_Name}.a
#合併後sdk路徑
merge_path=${exportSdkPath}/lib${target_Name}.a
#build之前clean一下
xcodebuild -target ${target_Name} clean
#模擬器build
xcodebuild -target ${target_Name} -configuration ${build_model} -sdk iphonesimulator
#真機build
xcodebuild -target ${target_Name} -configuration ${build_model} -sdk iphoneos
#複製標頭檔案到目標資料夾
cp -R ${buildPath}/${build_model}-iphoneos/include/${target_Name} ${exportSdkPath}
#合併模擬器和真機.a包
lipo -create ${iphoneos_path} ${simulator_path} -output ${merge_path}
#壓縮合並後的檔案
#壓縮後的檔名
package_date=`date '+%Y-%m-%d日%X'`
sdk_zip_name=lib${target_Name}_${build_model}_${package_date}.zip
#跳轉到sdk的輸出路徑
cd ${exportSdkPath}
#壓縮sdk輸出路徑下的所有檔案
zip -r ~/Desktop/${target_Name}-SDK/${sdk_zip_name} ./*
#開啟合併後的sdk所在路徑
open ${exportSdkPath}
#刪除build檔案
if [ -d ${buildPath} ]; then
rm -rf ${buildPath}
fi
使用方法:
1.開啟終端使用vi、vim命令建立指令碼檔案 xxx.sh
2.複製以上指令碼內容到 xxx.sh
3.將 xxx.sh檔案匯入sdk工程根目錄下
4.修改對應的工程名target_Name,及編譯方式build_model
5.開啟終端 cd到sdk工程根目錄下
6.終端執行 sh xxx.sh
相關推薦
靜態庫自動打包合併靜態庫指令碼
每次更新sdk都需要重複的在真機下build,在模擬器下build,然後再合併靜態庫;為了解放雙手,嘗試著寫了個指令碼,一步完成以上工作。 #!/bin/bash #要build的target名 target_Name=XXX #編譯模式 Relea
【福利乾貨】Maven 自動打包編譯的shell指令碼
以下內容純屬瞎琢磨,希望對大家有用,廢話不多說直接上程式碼 #!/bin/bash echo ================================= echo 自動化部署指令碼啟動 echo 自動化部署指令碼啟動 echo ==============================
Maven 自動打包編譯的shell指令碼
#!/bin/bash echo ================================= echo 自動化部署指令碼啟動 echo 自動化部署指令碼啟動 echo ================================= echo 進入/data/vhome cd
iOS拆分,合併靜態庫以壓縮打包空間
需求:拆分iOS中體積較大的第三方靜態庫以實現軟體瘦身. 閱讀前提: 瞭解各種架構的靜態庫含義 瞭解如何使用Terminal 簡書地址 : 拆分iOS靜態庫 部落格地址 : 拆分iOS靜態庫 掘金地址 : 拆分iOS靜態庫 基本介紹 一般靜態庫中支援真機和模擬器多種CP
obj檔案打包為靜態庫,靜態庫中抽取obj檔案
0.前言: 嘗試製作ida FLIRT簽名檔案,需要從lib檔案中抽取obj檔案,於是順帶著把生成lib檔案的命令也看了一邊。雖然我知道不會有人傻兮兮的放著IDE不用,而用命令列來生成庫檔案。 1.準備環境: 安裝vc++6.0並進入編譯器安裝目錄下"VC98\Bin"子目
元件化開發之04 如何將一些靜態庫打包成動態庫
筆者打造出來了5個基礎元件,滿懷信心準備大幹一場時候,發現業務元件用到支付寶 , 微信支付 SDK ,微博 SDK ,高德地圖 SDK 等靜態庫. a ,.framework 檔案時候,連結到元件時候報錯誤,而且還不容易解決,因為我整個工程都是 use_fram
iOS打包.a靜態庫步驟
打包靜態庫流程 1.建立靜態庫 2.實現類 3.公開.h檔案 4.打包模擬器靜態庫 5.打包真機靜態庫 6.合併模擬器 和 真機 靜態庫 7.測試靜態庫 一、前期工作 1、新建.a靜態
iOS將多個第三方sdk打包成靜態庫
前段時間做了個sdk打包成動態庫,發現使用非常方便各種好處也特別多,然後在最後將APP打包時出問題了,打包時候動態庫打不進去,想了很多辦法還是沒有解決,又因為趕時間所以只能重新打成靜態庫了。 在打成靜
IOS開發中合併靜態庫
在xcode開發中經常會使用到一些三方的靜態庫,比如百度地圖SDK。然而在使用過程中會發現如果直接把os和simmulator裡面的兩個靜態庫拖進專案中會導致不能執行。所以只能在使用真機的時候新增os下的.a檔案 在使用模擬器的時候新增simulator下的.a檔案。這樣就
.a靜態庫的打包(包括打包的檔案中用到了一些別人的三方庫和分類的處理)
一、概念篇 什麼是庫? 庫是程式程式碼的集合,是共享程式程式碼的一種方式 根據原始碼的公開情況,庫可以分為2種類型 開源庫 公開原始碼,能看到具體實現 比如SDWebImage、AFNetworking 閉源庫 不公開原始碼,是經過編譯後的二進位制檔案,看不到具體實現
iOS生成靜態庫方法-iOS整合靜態庫-iOS合併靜態庫
ld: warning: ignoring file /Users/XXXX/Documents/MyLibraryTest/MyLibraryTest/MyLibrary/libMyStaticLibraryDemo.a, missing required architecture i386 in f
靜態鏈接庫與動態鏈接庫的區別及動態庫的創建(轉)
相關 賦值 include ret sta 參數解析 span static 很好 一、引言通常情況下,對函數庫的鏈接是放在編譯時期(compile time)完成的。所有相關的對象文件(object file)與牽涉到的函數庫(library)被鏈接合成一個可執行文
Makefile常用萬能模板(包括靜態鏈接庫、動態鏈接庫、可執行文件)
lib post targe class 到你 param 圖片 spa log 本文把makefile 分成了三份:生成可執行文件的makefile,生成靜態鏈接庫的makefile,生成動態鏈接庫的makefile。 這些makefile都很簡單,一般都是一看就會用
mingw qt(可以去掉mingwm10.dll、libgcc_s_dw2-1.dll、libstdc++-6.dll的依賴,官方的mingw默認都是動態鏈接gcc的庫而TDM是靜態鏈接gcc庫,tdm版本更好用)
單獨 option web blank debugging 信息 pre internal 類庫 原文地址:mingw qt作者:孫1東 不使用Qt SDK,使用mingw編譯qt源代碼所遇問題及解決方法: configure -fast -release -no-
靜態鏈接庫和動態鏈接庫
pro 成員 ostream 指令 num n) else .com 需要 靜態鏈接庫和動態鏈接庫 共有兩種庫: 一種是LIB包含了函數所在的DLL文件和文件中函數位置的信息(入口),代碼由運行時加載在進程空間中的DLL提供,稱為動態鏈接庫dynamic link libr
連結裝載與庫 第4章 靜態連結
靜態連結 /* a.c */ extern int shared; int main() { int a = 100; swap( &a, &shared); } /* b.c */ int shared = 1; void swap(int* a, i
Linux下動態庫(.so)和靜態庫(.a) 的區別 Linux下動態庫(.so)和靜態庫(.a) 的區別 動態庫(.so)連結靜態庫(.a)的情況總結
Linux下動態庫(.so)和靜態庫(.a) 的區別 靜態庫在程式編譯時會被連線到目的碼中,程式執行時將不再需要該靜態庫。編譯之後程式檔案大,但載入快,隔離性也好。 動態庫在程式編譯時並不會被連線到目的碼中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。多個
關於原始檔,標頭檔案,靜態連結庫檔案,動態連結庫檔案的的理解
先從原始檔和標頭檔案的關係說起,由於是還是初學階段,只接觸了C++語言和windows平臺下的程式設計,所以只講這兩方面的東東, 標頭檔案的作用:對函式,變數,和類的宣告,其實在標頭檔案也可對一些特殊函式和變數定義,比如可以在標頭檔案中對行內函數和const型別變數定義,由於對類的宣告
QtEmbedded-4.8.6-arm 編譯選擇從 動態庫變化到靜態庫 時,生成的Makefile連結庫路徑下如果有動態庫和靜態庫,優先選擇動態庫編譯應用
問題:QtEmbedded-4.8.6-arm 編譯選擇從 動態庫到靜態庫 時,發現的一個疑惑:,生成的Makefile連結庫路徑下如果有動態庫和靜態庫,優先選擇動態庫編譯應用 具體現象: 我最初是使用動態庫的 QtEmbedded-4.8.6-arm (編譯器選擇時,是 ./co
如何理解Linux下的動態庫概念,和靜態庫概念,通俗易懂的解釋如下:
動態庫和靜態庫都是一組函式集合,打包在一起供應用程式呼叫,區別是: 靜態庫名稱一般為xxx.a,在編譯時和應用程式連結在一起,這樣的應用程式佔用空間較大。 動態庫名稱一般為xxx.so,對於動態庫即可以在編譯時連結,也可以使用dlopen()/dlsy