iOS带分享plugins的ipa包重签名问题,(微信也是带plugins的,有微信重签名经验的可以指导下我)

需求:公司业务需求,需要将我们的包给部分公司使用,但是不给源码,并且需要我们开发出重签名教程,但是由于公司的app有ShareExtensio,签名完成后总是无法安装。

操作步骤:
1.用公司自己的Appstore账号打了一个的不带插件的的ipa包。
2.用另一个appstore账号配置的 embedded.mobileprovision,和插件的 embeddedEX.mobileprovision
3.使用embedded.mobileprovision 通过security cms -D -i embedded.mobileprovision > embedded.plist
命令生成embedded.plist
4.使用/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' embedded.plist > entitlements.plist
生成创建 entitlements.plist 文件
5.修改解压后的ipa包里的info.plist的BoundleID和 embedded.mobileprovision中的一致。
6.
codesign -f -s “iPhone Distribution: XXX” Payload/解压出来的.app/Frameworks/xxxx.framework
重签名framework
7.
codesign -f -s "iPhone Distribution: XXX" --no-strict --entitlements=entitlements.plist Payload/解压出来的.app
重签名app
8.
zip -r new.ipa Payload
打包后可以安装使用。

9.对带shareExtension的adhoc包重复2-5操作。并且embeddedEX.mobileprovision 生成插件的相关plist,并修改plugins/info.plist的BoundleID,同时embeddedEX.mobileprovision替换插件目录下的embedded.mobileprovision
10.先对插件中appex签名,(appex里没framework);然后重复6-7操作主程序的签名。
11.打包安装,安装总是提示


(可以去确定证书和配置文件都没选择错误)
尝试了多次也没解决带插件的ipa包的签名。

12.使用另一个签名方法也失败
后来直接sigh resign的命令行直接操作。
sigh resign -p cn.main.ex当前=embeddedEx.mobileprovision -p cn.main=embedded.mobileprovision
最后系统提示

签名成功。安装也是同样提示。

13.使用iOS App Signer签名带插件的程序 插件部分的info.plist是未变的,但是可以安装,我只对主程序签名,忽略插件也是安装不成功的,不知道iOS App Signer的方案是啥。

PS:
BoundleID是正确的。主程序和ex部分都是同样签名操作(这边是不是要有差异化?)。手机的uuid也在mobileprovision里
主程序mobileprovision的和ex的mobileprovision都是新建的两个id,并且用app group关联了。
网上基本上找到的都是只对不带ex的程序进行签名的按理。我只是把ex的签名过程弄的和主程序一致的,但是最后还是失败。
** 环境:sigh resign

打个广告 IPASigner
然后就是紫薯布丁。。。。。。。

签plugins的时候有什么要特殊处理的么

1 个赞

和 app 处理一样就可以了,没有特殊处理。

紫薯布丁。。。。。。。

你这个签名对象是ipa 但是插件是在ipa里面的,你这个不能单独对ipa里面的东西进行签名啊。
插件是在.app下的plugin文件夹下的.appex。这个。appex相当于ipa里的.app

工具会自动签名 ipa 里的 watch 和 plugins,请仔细看 README。

使用 ipasigner resign -p embedded.mobileprovision Linkdood.ipa
重签名,看日志来显示 用的都是我主程序的provision来签名的。plugins是有自己的独立的provision。readme中并没有看到给插件单独配置指定的provision。


签名结束后安装提示
“Linkdoodsigned” does not contain an application bundle, so it cannot be installed on

ipasigner resignipasigner sign 是有区别的

resign 模式下:watch、plugin 会使用 app 相同的描述文件

sign 模式下:会根据实际 bundle id 去匹配对应的不同的描述文件

pod install提示
[!] Unable to find a specification for MobileProvision

$ pod repo update

研究微信多开时,遇到过,当时问题是主应用info.plistbundleid与plugins中info.plist的bundleid的前缀不一样的原因,修改一样就可以了。
表示对Linkdood这个工程很熟悉。

这个依然会被检测到的