如何通过 shell 脚本快速实现 ipa 证书替换

目录

前言:

在自动化测试过程当中,我们可以通过脚本快速实现 DEV 证书替换 (除 Release 外基本都可通过这个方式进行证书替换),而省去 Xcode-build Xcode-run 各种煎熬的编译等待。


前言:

在开发应用程序时,我们需要对其进行各种测试,以确保其稳定性和可靠性。其中,UI 自动化测试是一种常用的测试方法,它可以通过自动化操作来测试应用程序的功能和性能。在 UI 自动化测试中,我们可以选择不同的测试框架,如 UiAutomator、Appium 等。

在自动化测试过程当中,我们可以通过脚本快速实现 DEV 证书替换 (除 Release 外基本都可通过这个方式进行证书替换),而省去 Xcode-build Xcode-run 各种煎熬的编译等待。

笔者实现这个过程也是因为在 CI 过程当中被自动化的逼迫~脚本其实是基于codesign,细心的同学会注意到 Xcode 编译时的 shell output 在最后会自动调用这个命令codesign也就是给我们的 app 签署配置的证书。

下面已贴出脚本,主要介绍 5 个参数:
1. ORIGINAL_FILE="$1" 待签名的ipa包
2. CERTIFICATE="$2" 证书名称
3. MOBILEPROVISION="$3" 对应的描述文件
4. BUNDLE_ID="$4" app的BundleID, 如果你的描述文件允许你修改任意BundleID那么可以任意填写,否则就老老实实的把原BundleID写上吧
5. PASSWD="$5" 当前用户所对于的密码

# !/bin/bash 
# 
# Sample: 
#  sh resign.sh adhoc6.0.8\ 80000.ipa "iPhone Developer: wuxian autotest (xxoo)" Dev_xxoo_iphone.mobileprovision "com.xxoo.iphone" "58"
# 


ORIGINAL_FILE="$1" 
CERTIFICATE="$2" 
MOBILEPROVISION="$3" 
BUNDLE_ID="$4" 
PASSWD="$5"

function unzip_IPA() 
{ 
 ipa="$ORIGINAL_FILE" 
 unzip -o "$ipa" 
} 


function create_EntitlementsPlist() 
{   
 /usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i ${MOBILEPROVISION}) > entitlements.plist  
 SN_CODE=$(/usr/libexec/PlistBuddy -c "Print :com.apple.developer.team-identifier" entitlements.plist) 
 /usr/libexec/PlistBuddy -c "Set :application-identifier ${SN_CODE}.${BUNDLE_ID}" entitlements.plist 
} 


function set_BundleID() 
{ 
 /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $BUNDLE_ID" Payload/*.app/Info.plist 
} 


function del_OldCodeSign() 
{ 
 rm -r Payload/*.app/_CodeSignature/ 
} 


function copy_EmbeddedProvision() 
{ 
 cp $MOBILEPROVISION Payload/*.app/embedded.mobileprovision 
} 


function reSign() 
{ 
 codesign -f -s "$CERTIFICATE" --entitlements entitlements.plist Payload/*.app/ 
} 


function rezip_IPA() 
{ 
 original_IPA=`basename "$ORIGINAL_FILE"` 
 re_IPA=`echo ${original_IPA/.ipa/-resigned.ipa}` 
 zip -qr "$re_IPA" Payload/ 
} 

security unlock-keychain -p "$PASSWD" ~/Library/Keychains/login.keychain 

unzip_IPA 

create_EntitlementsPlist 

set_BundleID 

del_OldCodeSign 

copy_EmbeddedProvision 

reSign 

rezip_IPA

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N6B9http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=fheO5TYOLFkTCTG7WyOlFgKZLQhcY3o1&authKey=DQU6aFiRapPf3G7HW0UtSW0eVzQ8ENxW7hbGr34spyUyATul66ZiffCmuiDp6YAm&noverify=0&group_code=574737577 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值