This is a Shell script for macOS that can re-sign ipa.
Author: iGhibli
Date: 2019/01/22
Description: 一键自动重签ipa脚本。自动备存dis版本,自动生成debug版本。
Cautions:
下载下来的
mobileprovision文件
安装后必须拷贝一份放到resign.sh
重签脚本的同级目录下。需要先将
resign.sh
重签脚本中的XXXXXX
替换为你的证书的十六进制串(Signing Identity)。App Store下载的包,需要先 iOS逆向 砸壳,才能重签。
- 安装
homebrew
- 安装链接。
- 安装命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 安装
ruby
- 安装命令:
brew install ruby
- 安装命令:
- 安装
sigh
- 安装命令:
sudo gem install sigh
- 安装命令:
- 直接运行命令:
./resign.sh xxx_dir/xxx.ipa
Cautions: 脚本执行时传入参数需为ipa文件的完整绝对路径。
- 如果ipa 里面有除了系统之外的
framework
或者dylib
的话,也需要先签名,不然也会导致签名后安装失败!至于sigh
里面大致执行的脚本代码如下:
for framework in "$FRAMEWORKS_DIR"/*
do
if [[ "$framework" == *.framework || "$framework" == *.dylib ]]
then
log "Resigning '$framework'"
# Must not qote KEYCHAIN_FLAG because it needs to be unwrapped and passed to codesign with spaces
# shellcheck disable=SC2086
/usr/bin/codesign ${VERBOSE} ${KEYCHAIN_FLAG} -f -s "$CERTIFICATE" "$framework"
checkStatus
else
log "Ignoring non-framework: $framework"
fi
done
- 看得懂或者熟悉脚本的同学可以前往以下地址:
/usr/local/lib/ruby/gems/2.3.0/gems/sigh-2.0.1/lib/assets/resign.sh
版本号是根据自己当前
sigh
插件的版本号决定的。
- 直接执行此脚本可以重签多
target
的ipa
:./resign.sh YourApp.ipa "iPhone Distribution: YourCompanyOrDeveloperName" -p "bundel id"=.mobileprovision -p "bundel id"=.mobileprovision -p "bundel id"=.mobileprovision -p "bundel id"=.mobileprovision resignedYourApp.ipa