一、如何重新签名ipa文件
准备
在重签名之前要做一些准备工作。
1.首先要下载并安装Xcode,里面有个codesign_allocate程序,在安装时/usr/bin中会多一个codesign的程序,该程序用于ipa包的签名。
2.企业证书的Certificate文件,私钥文件,Provisioning Profile文件等。注意企业证书一定要是iOS Distribution的类型,不能是iOS Development。
重签名步骤
1.解压ipa
解压ipa得到Payload/[App name].bundle,打开bundle。
2.删除旧的ipa签名信息
删除bundle中的_CodeSignature文件夹,也就是删除之前ipa的签名信息。
3.更换证书
将bundle中旧的Provisioning Profile删除,用我们自己的企业证书的Provisioning Profile替代。
注意,要将ipa包中我们的企业证书改名为embedded.mobileprovision。
4.修改bundle内容
此时我们可以尽情地修改bundle中的内容,例如添加一个动态库,删除一张图片等。
注意:如果要往bundle中添加动态库,必须要先将其压缩成zip文件,在程序启动时将其解压到Documents目录下再dlopen,否则程序在启动时加载动态库文件会卡死在那里。
5.重新签名
在完成bundle内容的修改后,需要通过/usr/bin/codesign程序重新签名,命令如下:
/usr/bin/codesign-f-s"iPhone Distribution: YourCompanyName"--resource-rules Payload/ MYAPP.app/ResourceRules.plist Payload/ MYAPP.app
其中iPhone Distribution可以从钥匙串访问中获取,就是企业证书的名字,例如下面的"iPhone Distribution:XXXXXXXXXX":
具体的命令示例:
codesign-f-s"iPhone Developer: XXXXXXXXXX"--resource-rules Payload/NdCP_Game_Demo.app/ResourceRules.plist Payload/NdCP_Game_Demo.app
这条命令的意思是:使用keychain中"iPhone Developer: XXXXXXXXXX"标识的证书,根据Payload/NdCP_Game_Demo.app/ResourceRules.plist文件中的规则进行签名,如果ipa包中已经存在签名,那么将被替换,该过程生成的_CodeSignature目录将存放在Payload/NdCP_Game_Demo.app目录下。
在命令执行后,在bundle中会生成一个新的_CodeSignature目录,里面包含了新的签名信息。
6.重新打包成ipa
在完成上述工作后,可以生成新的ipa进行发布。示例命令如下:
zip-r ResignTest.ipa Payload
#注意Payload后面不能有“/”
7.发布
经过打包发布测试,得出结论:对修改了ipa包内容和其中的签名后,重签名的ipa文件可以在非越狱设备和越狱设备上成功安装。注意,是通过带有SSL证书的网站和Apple系统安装的(企业内部分发程序),不是通过PP助手那样的第三方工具安装的。
二、苹果签名ipa是什么
苹果企业签名就是通过苹果企业开发者账号生成的p12证书进行签名分发。无需越狱,无需上架App Store就能被用户直接下载安装。
IPA是iOS程序应用文件的格式,以亥著平台为例,开发者只需浏览器登陆亥著平台,注册后选择在企业签名页面,一键上传app IPA文件,完成支付即可自助企业签名,每天登陆即可免费分发一次。
三、苹果企业签名
一、用iReSign工具进行ipa重签名
iReSign运行界面:
appName.ipa:要重签名的ipa
embedded.mobileprovision:用来签名的provision文件
entitlements.plist:授权机制
distributionName:指该签名对应的证书的名字,在keychain中可以找到对应证书的名称
1.mobileprovision文件名字可以随便取,iReSign程序在将mobileprovision文件拷贝到app中时会重命名为embedded.mobileprovision。
2.第三行entitlement.plist必须填写,不然会一直卡在Entitlements generated。
3.不需要修改BundleID时,修改ID前面的CheckBox不要勾选。
稍等一会就会生成example-resigned.ipa新的ipa文件。
授权机制决定了哪些系统资源在什么情况下允许被一个应用使用。简单的说它就是一个沙盒的配置列表。Xcode会将这个文件作为--entitlements参数的内容传给codesign。
这个文件内部格式如下:
注意:application-identifier中的BundleID必须是用来重签名证书上的BundleID,不然重签名出来的ipa包安装会出错。
解决方法:
可以将源码中的这个判断去掉。
解决方法:
查看entitlements.plist文件中的application-identifier的BundleID是不是用来重签名证书上的BundleID。
四、苹果app签名过期如何解决
开发ios软件中会有这样一个环节,就是给ios进行签名,拥有签名证书的的ios软件只有进行签名才能在手机设备中正常运行,但是有时候ios软件会出现签名过期的提示,那么苹果app为什么签名会过期呢?
工具/原料
微导流开发者服务平台
IPA文件
苹果app签名过期的原因
1
首先我们要知道签名过期有很多种原因,而签名证书是通过数字化的证书进行加密,一般的证书中还会添加过期的时间信息,所以就有了证书过期的这一现象。
请点击输入图片描述
所以过期的原因就是因为证书到期或过期而导致ios软件不能使用,证书到期一般情况下,找购买签名的商家那里进行续签即可,如果是自己的签名只需要自己续签就行了。
还有签名商删除了你的签名,这种情况下也会导致ios软件不能使用,因为本身的签名证书已经不存在了。
再一个就是签名证书使用过多,一个证书签的app数量过多也会导致签名证书失效,因为苹果企业账号只能用于内部测试,签名过多的时候就会视为违规,就会出现停封证书的现象。
当我们在发现自己的ios软件证书到期的情况下,先检查一下是因为什么而过期,再解决这个问题。
END
签名过期怎么办?
无论是证书到期还是被封停,只需要找到签名服务商,重新签名就可以了,但签名经常性过期会造成app用户流失,所以我们在选择签名时需要注意,在资金充足的情况下,优先选择独立、稳定签名,接下来我们说说如何自己给苹果app进行在线签名。
进入微导流官网,首先登陆自己的账号,如果没有账号可以先注册一个,然后根据导航栏提示,点击:在线签名。
请点击输入图片描述
点击上传IPA文件,要注意,这个IPA文件必须是之前未签过名的
请点击输入图片描述
选择套餐和时间,点击在线签名,支付即可
请点击输入图片描述
在个人账号-签名管理中,可以看到已签名的应用,点击下载即可。
请点击输入图片描述
这样就解决了签名过期的问题,很多人做签名是直接找到个人服务商,这样难免会遇到无法及时回复的情况,如果在平台自主在线签名,可以减少等待的时间。
注意事项
在线签名上传的IPA文件必须是未签过名的。