重签名的意义:ipa 重签名最大的用处是,没必要从新打包,和配置其它第三方获取 appkey 等操做,直接重签名以后依然能够拥有这些功能,更快的发布测试或者灰度版本。ios
本文介绍三种方式的重签名,固然着重介绍第一种,由于目前来讲是签名最全面的,也是最可靠的。git
mobileprovision
文件必须更名字为 embedded.mobileprovison
而后安装。Bundle Identifier
的基础上增长了证书的 ID
appid
和 provisoning profile
,否则同appid
的会覆盖。/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install ruby
更新 ruby 版本sudo gem install sigh
若是出错那就换成gem install sigh
安装过程是漫长的。(在安装 sigh 以前,你得检查 gem的镜像源,如今通常为https://gems.ruby-china.org
若是提示 timeout 仍是啥的,请把 https 的 s 去掉,从新添加) 设置能够参考Ruby Chinasigh resign
:最有效,不出错的重签名方法。已验证embedded.mobileprovison
放在同一文件夹目录下,同级sigh resign
或者 fastlane sigh resign
命令Signing Identity
这个就是你的证书的十六进制串,输入以后回车,而后等待见证奇迹的时刻吧。看图说话最直接,下面就看看终端的截图,当出现Successfully signed 路径/xxx.ipa!原来文件夹中的.ipa已经被重签名了。github
如今还能用的助手很少了,pp 助手目前还存活,iTools 已经频繁报错没更新了。pp 助手安装 ipa 包的流程大体以下:shell
sigh resign
关于重签名有时候失败或者没法安装的状况说明。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
或者/usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.61.0/sigh/lib/assets/resign.sh
版本号是根据本身当前 sigh
插件的版本号决定的(直接执行此脚本能够重签多 target 的 ipa:./resign.sh YourApp.ipa "iPhone Distribution: YourCompanyOrDeveloperName" -p "bundel id"=<path_to_provisioning_profile_for_app>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitextension>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_watchkitapp>.mobileprovision -p "bundel id"=<path_to_provisioning_profile_for_todayextension>.mobileprovision resignedYourApp.ipa
)安全
下载 iResign,下载完直接有个可执行的iResign.app,双击执行
mobileprovison
的 bundle identifier,勾选修改 ID,第五项是咱们重签名用到的mobileprovison
的证书entitlements generated
这个步骤,没法生成。因此咱们要本身生成entitlements.plist
! 首先咱们把要重签的 XXXX.ipa 解压后获得 Payload
目录,而后终端 cd 到Payload
目录下,执行如下命令:/usr/libexec/PlistBuddy -x -c "print :Entitlements " /dev/stdin <<< $(security cms -D -i XXXX.app/embedded.mobileprovision) > Entitlements.plist
其中 XXXX.app 是你要重签的 ipa的包名。生成的 entitlements.plist
存放在Payload
目录下,而后咱们用 文本编辑或者 Xcode打开 plist
文件,修改里面的<key>application-identifier</key>bundle id
。到此,配置完成,点击从新签名!噔噔噔!签名成功请看下图:ruby
Github的官方 read me 提示:This app requires Xcode to be installed, it has only been successfully tested on OS X 10.11 at this time.
bash
下载 iOS App Signer 源码,运行在 May Mac 上app
Re-Sign Only
是无效的),而后,点击star!provisoning profile
描述文件中的东西,因此不用咱们本身填写变动的bundle id
参考文章:curl
iOS ipa包从新签名ide