1. 程式人生 > >靜態庫自動打包合併靜態庫指令碼

靜態庫自動打包合併靜態庫指令碼

每次更新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