日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS自动化打包之重签名导出不同证书ipa探索

發布時間:2025/3/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS自动化打包之重签名导出不同证书ipa探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在完成基礎的自動包打包流程過后, 隨即也出現了日常中常見的問題, 比如我們每次需要打出不同網絡環境和不同證書的ipa, 由于開發者可以添加的設備只有100個, 而公司的幾個項目都是用的一個賬號, 各項目組都是獨立的, 再加上期間加入設備的員工的離職, 真正能參與測試的設備寥寥無幾。

所以我司一般測試都是使用企業證書, 這樣不同的項目都可以公用同一個證書, 不僅管理起來方面, 而且還擺脫了設備數量限制的煩惱, 但另一方面, 對于需要測試內購等功能的時候, 仍然需要使用adhoc證書的包來進行測試。

我們原先的打包策略是通過執行腳本時輸入的參數來打對應的包, 這樣對于不同測試并行測試, 一次就要打出好幾個, 以我司作為打包服務器 Mac Mini 來說, archive + export 一個包的時間約為20min, 對于不同證書不同環境的包隨機組合, 一次打出4個不同的包的時間就要花費約1h20min, 而且在打包的時候, 如果其他同事修改了新的bug, 也無法打包。

因此, 我們尋思能不能通過重簽名的方式, 只編譯一次, 對其重簽名, 打出不同的包。

本文主要介紹我在此過程中的一些探索, 旨在提高不同證書不同環境的打包效率。

對ipa進行重簽名

起初, 我在網上查閱了相關資料, 按照相關教程, 卻最終以失敗告終。 如果有同學直接對ipa進行重簽名成功的, 希望不吝賜教。

我估摸著是不是內部做了什么驗證, 導致對ipa重簽名無法成功。所以, 我想可不可以不到ipa這步, 更早地對其進行信息的修改以及重簽名, 權當一次嘗試, 即使失敗也能在探索中學到新知識。最終, 成功將原來打4個包需要1h20min的時間壓縮到30min不到。

不等導出ipa, 修改.xcarchive文件

.xcarchive文件是對項目進行手動archive, 或執行以下腳本:

xcodebuild archive -workspace ${work_space} -scheme ${scheme} -configuration ${configurationDistribution} -archivePath ${archivePath} 復制代碼

如果對打包命令不是很了解的, 可以查看我的上一篇文章文章:關于iOS自動化打包的一些分享

首先, 我們進入到 .xcarchive 文件目錄, 發現里面一個 Info.plist 文件, 打開如下顯示:

我們可以看到里面有一些App必需的屬性。

1. 修改 .xcarchive 的 Info.plist

此處, 如果項目 Bundle Identifier 需要發生改變, 則修改 CFBundleIdentifier 對應的值, 并將 SigningIdentity 改成 Bundle Identifier 對應的證書, 關于此處SigningIdentity的值, 可在鑰匙串中找到對應的證書, 查看其信息, 即為下圖中(英文系統)的 Common Name 。

2. 修改 App Extension 相關信息

此步是對于項目 target 中如 notification extension 等從屬 target, 如果沒有 App Extension , 直接可以跳過此步, 查看下一步 修改主target相關信息

通過文件夾打開 YourAppName.xcarchive/Products/Applications/YourAppName.app/PlugIns/YourAppNameNotificationServiceExtension.appex , 這里不是標準文件夾, open 命令似乎不起作用, 觀察其目錄結構:

2.1 修改 Info.plist 相關信息

App Extension 的 Bundle Identifier 是 App 的 Bundle Identifier 加上其對應后綴, 如 notificationserviceextension 。

修改 Bundle Identifier 為對應的值, 這里對應的值是指之前修改 .xcarchive 目錄中 Info.plist 的 Bundle Identifier 對應, 如 com.test.www , 這里便是 com.test.www.notificationserviceextension。

2.2 替換 Provisioning Profile

將對應的 Provisioning Profile 拷貝到該目錄下替換原來的 Provisioning Profile , 改成相同的文件名 embedded.mobileprovision

2.3 修改 archived-expanded-entitlements.xcent

我們通過xcode打開archived-expanded-entitlements.xcent, 其本質就是plist文件, 格式是 teamId.bundle identifier 。

修改圖中遮蓋的兩項值, 依舊是要和.xcarchive的Info.plist值對應。

2.4 重簽名

用對應的證書對 App Extension 重新簽名, 這里的 YourCetificateName 依舊是修改 .xcarchive的Info.plist 里的證書名。

codesign -f -s "YourCetificateName" YourAppNameNotificationServiceExtension.appex 復制代碼

3. 修改主target相關信息

與上一步修改 App Extension 步驟基本相同, 只是少一步, 不用修改 archived-expanded-entitlements.xcent 。

3.1 修改Info.plist的相關信息

進入.app目錄, 修改Info.plist的Bundle Identifier, 使其與.xcarchive文件對應。

你也可以修改其他一些值, 如網絡環境, 是測試環境, 還是生產環境, 這里只是拋磚引玉。事實上, 修改網絡環境有方便的方法, 如通過讀取粘貼板的文本來切換, 或者寫一個輔助程序來打開我們的App, 從而通知切換環境。

3.2 替換Provisioning Profile

將對應的 Provisioning Profile 拷貝到該目錄下替換原來的 Provisioning Profile , 改成相同的文件名 embedded.mobileprovision 。

3.3 重簽名

用對應的證書對 .app文件 重新簽名, 這里的 YourCetificateName 依舊是修改 .xcarchive的Info.plist 里的證書名。

codesign -f -s "YourCetificateName" YourAppName.app 復制代碼

4. 導出包

xcodebuild -exportArchive -archivePath YourAppName.xcarchive -exportPath $(pwd) -exportOptionsPlist YourExportOptionsPlistPath 復制代碼

成功后, 命令臺輸出:

如果對于 exportOptionsPlist 不了解的, 也可以看我的上篇文章:關于iOS自動化打包的一些分享 。

注意點

上述修改的每一步, 無論是Bundler Identifer, 還是Provisioning Profile, 還是重簽名用的證書, 都是需要相對應的, 如果有一步錯了, ipa包是導不出來的。

我的表述可能不是那么清楚, 相信大家操作一次, 一步一步來, 修改需要修改的值, 其實基本是一目了然的。 大家如果有類似需求, 建議先操作一次, 成功后再寫腳本實現自動化。

總結

經過上述操作, 實質上只進行了一次編譯, 然后修改相關信息, 導出對應不同的證書的包, 只是多做了幾次導出操作, 大大地節省了打包時間。大家如果有什么想法或更好的辦法, 歡迎一起討論討論。

轉載于:https://juejin.im/post/5aa156b1f265da23866f7931

總結

以上是生活随笔為你收集整理的iOS自动化打包之重签名导出不同证书ipa探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 特黄一级大片 | 日韩无 | 波多野结衣电车痴汉 | 操网| 麻豆爱爱 | 五月天综合视频 | 那里可以看毛片 | www.在线看| 亚洲一区中文字幕 | 久久久久久久久久久久久久久久久久久久 | 一级免费大片 | 日本一区二区高清视频 | 超碰在线免费播放 | 又色又爽又黄gif动态图 | 欧美操老女人 | 日本精品视频一区二区三区 | 欧美成人免费在线观看视频 | av成人免费在线 | 国产在线视频网址 | 免费成人福利视频 | 久久久无码人妻精品无码 | 九九在线精品视频 | 香蕉视频黄色在线观看 | 最近最新最好看的2019 | 日本黄动漫| av首页在线观看 | 亚洲开心网 | 麻豆影视 | 黑白配高清国语在线观看 | 国产一区二区三区色淫影院 | 91蜜桃在线 | 亚洲最大成人在线 | 在线观看的黄色网址 | 国产片免费 | 亚洲欧美精品午睡沙发 | 久久国内偷拍 | 波多野结衣av电影 | 精品自拍第一页 | 一级国产视频 | 最新天堂中文在线 | 久久综合久色欧美综合狠狠 | 九九成人 | 姐姐你真棒插曲快来救救我电影 | 免费成人结看片 | 婷婷亚洲综合 | 欧洲精品一区二区三区 | 国产淫片av片久久久久久 | 成人久久精品 | brazzers欧美一区二区 | caoporn超碰97 | 日本在线观看视频网站 | 乌克兰做爰xxxⅹ性视频 | 欧美精品一区二区三区久久久竹菊 | 全黄一级男人和女人 | 亚洲成人黄色在线 | 日本欧美久久久久免费播放网 | 狠狠干一区 | 成年人免费视频播放 | av片观看| 日本五十熟hd丰满 | 亚洲a人| 一集毛片 | 日日摸夜夜添狠狠添久久精品成人 | 一级特黄aaa大片 | 午夜精产品一区二区在线观看的 | 精产国品一区二区 | 激情福利 | 伊在线久久丫 | 中文字幕成人在线观看 | 亚洲国产日韩欧美 | 欧美国产成人在线 | 香蕉手机网 | 久久91精品| 亚洲第一页av | 免费黄色网址在线观看 | 精品免费国产一区二区三区四区 | 国产精品中文久久久久久 | 亚洲免费在线观看视频 | 久久网站免费观看 | 色中色综合 | 中文字幕久久精品 | 久草影视在线观看 | 免费观看成人av | 精品福利电影 | 无码精品视频一区二区三区 | 我和岳m愉情xxxⅹ视频 | 波多野结衣高清视频 | 黄色网址链接 | 香蕉视频在线网站 | 蘑菇福利视频一区播放 | 日韩精品免费在线观看 | 无码人妻h动漫 | 成人在线播放视频 | 日韩无遮挡 | 精品人妻伦一二三区久久 | 毛片无码免费无码播放 | 欧美精品成人一区二区三区四区 | 在线97 | 欧美拍拍|