最简单的重签名应用的方法

答案是使用签名脚本
Sigh script at github
安装好brew,先用brew安装ruby,然后用gem安装sigh。
1、brew install ruby
2、sudo gem install sigh

使用就非常简单了:
1、输入sigh resign,回车
2、把要签名的ipa文件拖到窗口上,回车
3、填写用来签名的证书,回车
4、把embedded.mobileprovision文件拖到窗口上,回车
5、好了,resign脚本会自动更改bundel id,签名并重新打包。

如果像是微信那种带多targets的应用,可以直接调用resigh.sh进行签名:

./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

我详细举个例子说明吧,重签名一个叫乐动力的应用,里面包含一个XQTodayExtension.appex的通知栏插件,我们来看怎么签名:
1、先去导出两个mobileprovision文件,分别是应用和Plugin的,这里我导出了1. mobileprovision和2. mobileprovision,分别对应com.fenzi.xiaoqin和com.fenzi.xiaoqin.XQTodayExtension。
2、在1.4这个版本的sigh里,resigh.sh的位置是/usr/local/lib/ruby/gems/2.3.0/gems/sigh-1.4.0/lib/assets/resign.sh,运行resign.sh进行签名:

resign.sh /Users/Dylan/Code/LDL/xiaoqin.ipa "iPhone Distribution: YourCompanyOrDeveloperName" -p com.fenzi.xiaoqin=/Users/Dylan/Code/LDL/1.mobileprovision -p com.fenzi.xiaoqin.XQTodayExtension=/Users/Dylan/Code/LDL/2.mobileprovision /Users/Dylan/Code/LDL/xiaoqin2.ipa

保存下来的xiaoqin2.ipa就是重签之后的文件。如果有苹果手表的文件,也同理处理。

sign脚本还有很多实用的功能,比如直接申请ADHOC签名证书,申请Developent签名证书等等。
而sign脚本是fast lane系列工具中的一个,有兴趣可以研究下,功能非常强大。


Fastlane script at Github

9 个赞

楼主亲测可行吗?

亲测可行,也可以直接用xcode7的免费签名证书签发。

免费证书的,怎么弄??

1 个赞

感谢分享,刚看了下项目地址变了貌似https://github.com/fastlane/fastlane/tree/master/sigh

你发的这个地址是Fastlane下的,Fastlane是包含Sigh这个项目的。帖子末位下。

xcode7有提供免费的签名证书,可以用来直接进行真机调试。同样的,也可以用来重签名其他应用,签名方法与adhoc实际上是一样的。

这xcode7免费签名证书是绑定设备的开发证书,有办法生成发布证书吗?

当然有办法。可以看做是有很多限制的缩水版企业证书,有效期90天。

能请教下免签名证书如何能生成缩水版企业证书?其中的具体方法或者原理能分享下吗?

直接调用resigh.sh进行签名是怎么弄的?能更详细点吧,新手这个不太懂

后来才发现我弄错了,开发证书其实是缩水的ADHOC证书,鸡肋而已。

去github看,其官方有文档。

https://github.com/fastlane/fastlane/tree/master/sigh
是这个地址吗?我看了半天好像也就下面也一段啊,你说的那个找不到

已更新更详细用法。

sudo gem install sigh 这个我执行只能安装到1.3.1的版本 但是执行sudo gem update sigh 去更新提示我没有可用更新
我gem search sigh 也只有1.3.1版本 怎么安装1.4.1的版本?

换gem源,可能是你用的源刷新慢

导出两个mobileprovision是在哪里导出的呢?

这个缩水的ADHOC证书也有100台设备的限制吗?

我说错了,其实限制更多,具体多少台没试,应该也就几台吧。