当我们使用Xcode编译生成iOS应用程序时,它会生成一个.ipa文件,但是这个文件无法直接运行在iOS设备上。因为这个文件没有通过Apple认证过,也就是没有有效的签名证书,因此我们需要对文件进行签名,才能在真机上安装和运行。
简单来说,iOS应用程序签名是指将应用程序与一个特定的证书,即iPhone Developer证书或iPhone Distribution证书进行绑定。开发者在请求苹果的证书时需要提供开发人员账号、设备的UDID等证书所需的信息。根据开发者的情况,苹果官方提供的两种类型的证书:开发者证书和发布证书。开发者证书适用于开发测试期间,而发布证书用于将应用程序发布到苹果应用商店中。
然而,苹果的证书是有有效期的,开发者的开发证书通常有12个月的有效期,发布证书有效期最长为3年。证书过期后,我们所签名的应用程序将无法安装和运行。如果这时将手机的“日期时间”修改到过期日期之前,程序则可以继续运行,但这只是一次性临时方案。
那么,应用签名证书怎么处理?
## 方法一:续期
若证书未过期即将过期,可在苹果证书中心进行续期,开发者登录自己的账号,找到相应的证书过期后点击“续期”,然后更新相应的资料。然后,开发者需要重新上传证书和相关文件到所使用的工具中,以便将应用程序重新编译。
这种方法需要在证书过期前进行操作,对于已经过期的证书,需要使用第二种方法。
## 方法二:重新签名
利用新的开发者证书或者发布证书对已过期的应用程序重新签名,就可以使应用程序重新变得有效。
1.查看失效的签名证书
首先,在我们进行重新签名之前,我们需要查看.ipa文件被签名的证书过期时间,命令行下直接运行如下命令,即可查看:
codesign -vv -d 应用包名
其中,应用包名为你的ipa文件的包名。
2.新建选项卡并打开终端
我们可以做到两件事:
- 在新的选项卡中打开终端
- 将终端切换到要运行命令的目录
终端窗口中使用以下命令:open -a Terminal "/path/to/your/folder/"。
3.创建Entitlements.plist文件和Provisioning_Profile.mobileprovision文件
我们需要创建两个文件来重新签名。 这两个文件是:
- Entitlements.plist
- Provisioning_Profile.mobileprovision
我们可以在开发人员帐户中下载Provisioning_Profile.mobileprovision文件。文件应放在要签名的ipa文件的同一目录中。
在终端中运行以下命令来创建Entitlements.plist文件:
/usr/libexec/PlistBuddy -c "Add :get-task-allow bool true" Entitlements.plist
可以运行以下命令来添加其他部分:
/usr/libexec/PlistBuddy -c "Add :application-identifier string com.myCompany.myApp" Entitlements.plist
/usr/libexec/PlistBuddy -c "Add :keychain-access-groups array" Entitlements.plist
/usr/libexec/PlistBuddy -c "Add :keychain-access-groups:0 string com.myCompany.myApp" Entitlements.plist
4.解压ipa文件并删除签名
我们需要将原始的.ipa包解压并删除签名文件,以便重新签名时使用新的证书。
在终端中,我们可以使用如下命令来完成:
unzip -q "Your