日韩性视频-久久久蜜桃-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探索的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜看片在线观看 | 国产精品福利在线 | 懂色aⅴ一区二区三区免费 国产精品99在线观看 | 3级黄色片| 超碰在线公开免费 | 无码人妻精品一区二区三区温州 | 韩国三色电费2024免费吗怎么看 | 日本免费不卡一区二区 | 优优色综合 | 精品欧美一区二区三区在线观看 | 糖心视频在线 | 精品少妇人妻AV无码专区在线 | 最新超碰 | 欧美视频一区二区三区四区在线观看 | 在线黄网站 | 亚洲毛片精品 | 黑人糟蹋人妻hd中文字幕 | 午夜电影你懂的 | 中文综合网 | 老司机精品视频在线 | 高清一区二区三区视频 | 中文字幕在线观看播放 | 成人在线观看一区二区 | 亚洲激情国产 | 黄页网站免费观看 | 小柔好湿好紧太爽了国产网址 | 欧美在线观看一区二区三区 | 精品一区二区三区在线免费观看 | 色婷婷av一区二区三区麻豆综合 | 免费观看亚洲 | 朝桐光在线观看 | 日本aⅴ在线 | 成人福利在线播放 | 97国产成人无码精品久久久 | 激情网五月天 | 五十路av在线 | 亚洲人人插 | 日韩成人av在线播放 | 成人欧美精品一区二区 | 青青成人在线 | 一区二区精品在线观看 | 九九天堂 | 992tv在线成人免费观看 | 国产视频一区二区在线播放 | 一区二区三区日韩欧美 | av综合久久| 国产免费一区二区三区最新不卡 | 黑人精品一区二区三区 | 亚洲人妻电影一区 | 欧美乱大交xxxxx潮喷l头像 | 国产91在线播放精品91 | 亚洲熟妇无码乱子av电影 | 影音先锋中文字幕在线视频 | 99热免费精品 | 精品日韩制服无码久久久久久 | 伊人久久久久久久久久 | 91精品综合久久久久久五月天 | 少妇熟女一区二区三区 | 三级全黄视频 | www日韩| 亚洲一区二区三区加勒比 | av免费网址在线观看 | 欧美性生活一区二区 | 精品久久久久久久无码 | 手机av在线免费 | 欧美色人阁 | 瑟瑟久久| 色综合综合网 | 好吊妞在线 | 一区二区三区在线免费观看视频 | 欧美久久久久久久久中文字幕 | 伊人久久大香线蕉av色婷婷色 | 日本午夜啪啪 | 色视频在线观看免费 | 在线视频污 | 99精品久久 | 欧美精品动漫 | 亚洲第一av在线 | 日韩a√| 久久久久久久久久久电影 | 亚洲精品2区| 亚洲美女自拍偷拍 | 久久国产精品免费看 | 亚洲欧美一区二区三区情侣bbw | 青青在线精品 | 成人公开视频 | 国产乱码一区二区三区播放 | 男人的天堂a在线 | 五月激情小说 | 久草资源网 | 丁香激情五月少妇 | 国产一区2区 | 老司机福利精品 | 五月天国产在线 | 久久精品国产亚洲a | aa视频在线 | 欧美性狂猛xxxxxbbbbb | 午夜网| 女人高潮特级毛片 |