Xcode + 腳本自動(dòng)化簽名

廢話

簽名的話, Xcode當(dāng)然是最專(zhuān)業(yè)的, 我們需要為Xcode簽名做好準(zhǔn)備工作

原理

Xcode編譯過(guò)程.png

上圖是重簽名工程的編譯過(guò)程, 比較重要三個(gè)步驟
1. Create product structure 創(chuàng)建xxx.app 文件
2. Run custom shell script 'Run script' 運(yùn)行自定義腳本
3. Sign xxx.app 簽名xxx.app文件

因?yàn)檫@個(gè)編譯順序, 我可以在自定義腳本中將xxx.app文件替換成我們要簽名的.app文件, 同時(shí)也需要做一些Xcode不能完成的工作

簽名步驟

  1. 將要簽名的.ipa.app文件放在工程目錄中, 這里是將.ipa文件放在${SRCROOT}/APP目錄下. 還需要?jiǎng)?chuàng)建${SRCROOT}/Temp目錄, 用來(lái)存ipa文件放解壓后的文件.
ipa存放路徑.png
  1. 添加自定義腳本
# ${SRCROOT} 它是工程文件所在的目錄
TEMP_PATH="${SRCROOT}/Temp"
#資源文件夾
ASSETS_PATH="${SRCROOT}/APP"
#ipa包路徑
TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa"

#新建Temp文件夾
rm -rf "${SRCROOT}/Temp"
mkdir -p "${SRCROOT}/Temp"

#----------------------------------------
# 1. 解壓IPA到Temp下
unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH"
# 拿到解壓的臨時(shí)的APP的路徑
TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1")
# echo "路徑是:$TEMP_APP_PATH"

#----------------------------------------
# 2. 將解壓出來(lái)的.app拷貝進(jìn)入工程下
# BUILT_PRODUCTS_DIR 工程生成的APP包的路徑
# TARGET_NAME target名稱(chēng)
TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app"
echo "app路徑:$TARGET_APP_PATH"

rm -rf "$TARGET_APP_PATH"
mkdir -p "$TARGET_APP_PATH"
cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"

#----------------------------------------
# 3. 刪除extension和WatchAPP.個(gè)人證書(shū)沒(méi)法簽名Extention
rm -rf "$TARGET_APP_PATH/PlugIns"
rm -rf "$TARGET_APP_PATH/Watch"

#----------------------------------------
# 4. 更新info.plist文件 CFBundleIdentifier
#  設(shè)置:"Set : KEY Value" "目標(biāo)文件路徑"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"

#----------------------------------------
# 5. 給MachO文件上執(zhí)行權(quán)限
# 拿到MachO文件的路徑
APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<`
#上可執(zhí)行權(quán)限
chmod +x "$TARGET_APP_PATH/$APP_BINARY"

#----------------------------------------
# 6. 重簽名第三方 FrameWorks
TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks"
if [ -d "$TARGET_APP_FRAMEWORKS_PATH"];
    then
for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"*
do

#簽名
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK"
done
fi
  1. cmmand + R

后記

以上是利用腳本自動(dòng)化簽名, 其實(shí)手動(dòng)也是可以的, 即腳本所有的工作手動(dòng)完成

  1. 編譯工程生成xxx.app文件
  2. 解壓需要重簽名的.ipa文件, 用其中的.app文件替換掉xxx.app文件, 并改為和xxx.app文件一樣的名字
  3. 腳本中的其他工作
  4. cmmand + R
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末异吻,一起剝皮案震驚了整個(gè)濱河市唱凯,隨后出現(xiàn)的幾起案子桨仿,更是在濱河造成了極大的恐慌睛低,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件服傍,死亡現(xiàn)場(chǎng)離奇詭異钱雷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)吹零,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)急波,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人瘪校,你說(shuō)我怎么就攤上這事澄暮。” “怎么了阱扬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵泣懊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我麻惶,道長(zhǎng)馍刮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任窃蹋,我火速辦了婚禮卡啰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘警没。我一直安慰自己匈辱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布杀迹。 她就那樣靜靜地躺著亡脸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浅碾,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天大州,我揣著相機(jī)與錄音,去河邊找鬼垂谢。 笑死厦画,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滥朱。 我是一名探鬼主播根暑,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焚虱!你這毒婦竟也來(lái)了购裙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鹃栽,失蹤者是張志新(化名)和其女友劉穎躏率,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體民鼓,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薇芝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丰嘉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夯到。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饮亏,靈堂內(nèi)的尸體忽然破棺而出耍贾,到底是詐尸還是另有隱情,我是刑警寧澤路幸,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布荐开,位于F島的核電站,受9級(jí)特大地震影響简肴,放射性物質(zhì)發(fā)生泄漏晃听。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一砰识、第九天 我趴在偏房一處隱蔽的房頂上張望能扒。 院中可真熱鬧,春花似錦辫狼、人聲如沸初斑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)越平。三九已至频蛔,卻和暖如春灵迫,著一層夾襖步出監(jiān)牢的瞬間秦叛,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工瀑粥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挣跋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓狞换,卻偏偏與公主長(zhǎng)得像避咆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子修噪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 用到的組件 1查库、通過(guò)CocoaPods安裝 2、第三方類(lèi)庫(kù)安裝 3黄琼、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,602評(píng)論 1 180
  • 背景 新項(xiàng)目這邊每次版本移交樊销, 給測(cè)試都是直接xcode挨個(gè)拿手機(jī)安裝的流程. 一次兩次還好,天天這么搞脏款,而且每次...
    全力以赴打醬油閱讀 1,522評(píng)論 0 4
  • 「勇氣围苫,是當(dāng)渴望大於恐懼,而帶著恐懼全力以赴撤师〖粮」 人有七情六慾,愛(ài)恨情仇剃盾,其中最常在我生命中出現(xiàn)的腺占,就是恐懼。 生...
    leejayce閱讀 100評(píng)論 0 1
  • 我是哭著看完《星空》的痒谴。 書(shū)中的她就好像另一個(gè)我衰伯,她用最簡(jiǎn)單的話語(yǔ)闰歪,說(shuō)出了我心底所有的話嚎研。我難過(guò)得像個(gè)...
    木唏閱讀 175評(píng)論 0 0
  • 艷艷秋風(fēng)臨北岸库倘,田田爽意蕩南園。 菊黃堪伴楓紅暖教翩,碧柳閑撥對(duì)月弦杆勇。 笑飲千斛河漢斗饱亿,酣游萬(wàn)里洞庭淵闰靴。 如織細(xì)雨花前...
    不惑而歌閱讀 586評(píng)論 35 44