在开发中,我们需要进行对应用程序进行调试,有如下打包方案

1.iOS 无证书真机调试流程 2.个人/公司证书

3.企业证书

在使用企业证书打包时,能够通过分发子证书的形式去打包,在分发的子证书中,只需要企业内其他开发者生成

如下证书和描述文件,还有一个在证书中绑定的应用Bundle identifier即可:

ios 生产证书打包 ipa 多了 SwiftSupport文件 苹果企业证书打包_服务器

在内部非主机开发者使用的时候,只需要将p12(导入时需要导出时设置的密码)文件导入到钥匙串,然后在Xcode中[项目名->target->build settings->Code Signing Identity]处选择导入的钥匙串,在[项目名->General->Signing->Provisioning Profile]描述文件处(provisioning profile)进行[Import Profile]hellowoeee.mobileprovision这个描述文件即可进行打包

对于上面这种行为就是指定证书打包方式,当然还有自动管理证书打包方式,自动签名管理打包只需要在[项目名->General->Signing->Automatically manage signing]选中下面按钮,然后进行打包即可



ios 生产证书打包 ipa 多了 SwiftSupport文件 苹果企业证书打包_ios_02


注意:
1.如果是指定证书打包的形式,是不用登录原企业账号的,只需要p12文件、p12文件的密码和绑定在证书上的bundle identifier 、证书文件
2.自动管理是需要登录企业证书账号的,用于自动管理证书

在打包完成之后,我们需要提供给使用者进行下载,此时有以下解决方案:
1.上传到内侧平台,如fir.im、蒲公英平台等
2.自己搭建服务器,在自己搭建服务器的时候,需要注意的是必须需要https服务器才能够进行提供下载功能,准确的说就是这个plist文件是需要https服务器的,在下载的时候,需要在服务器上面提供ipa文件、bp.plist文件,在需要下载的按钮或者a标签处直接访问bp.plist文件即可,而此时bp.plist文件的内容需要指定到ipa文件存放的地址,如下所示内容为bp.plist
[我这边测试过,可以将自己使用的plist文件存放到github或者码云上面拥有https协议的存储管理上面,然后复制raw方式文件地址,如下面所示这种地址形式]

https://raw.githubusercontent.com/suwu150/web-crawler/master/test/bp.plist

下面就是我在项目中使用的plist文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>items</key>
	<array>
		<dict>
			<key>assets</key>
			<array>
				<dict>
					<key>kind</key>
					<string>software-package</string>
					<key>md5</key>
					<string>247c3c09df432fe363d18f4b288c38b8</string>
					<key>url</key>
					<string>https://www.suwu150.cn:9080/ios/codeFile.ipa</string>
				</dict>
				<dict>
					<key>kind</key>
					<string>display-image</string>
					<key>needs-shine</key>
					<false/>
					<key>url</key>
					<string>https://www.suwu150.cn:9080/ios/ios.png</string>
				</dict>
			</array>
			<key>metadata</key>
			<dict>
				<key>bundle-identifier</key>
				<string>com.suwu150.ied</string>
				<key>kind</key>
				<string>software</string>
				<key>title</key>
				<string>rrrr</string>
			</dict>
		</dict>
	</array>
</dict>
</plist>

如上面所示代码,md5键值是需要和文件中的一致,否则在ios13系统中是不能够安装的,会安装到一半然后提示无法安装,请稍后重试弹窗,获取md5码值的方法参考下面代码,url所指定的位置就是.ipa的位置,在点击按钮或者a标签下载的时候,会通过ituns进行下载这个文件进行安装,display-image是在安装时需要显示在桌面上的图标,如果没有该条值,则在安装时会显示白色空白图标(默认图标)进行显示。
获取md5值:

var fs = require('fs');
var crypto = require('crypto');
var path = './codeFile.ipa';
var start = new Date().getTime();
var md5sum = crypto.createHash('md5');
var stream = fs.createReadStream(path);
stream.on('data', function(chunk) {
  md5sum.update(chunk);
});
stream.on('end', function() {
  str = md5sum.digest('hex');
  console.log('文件:'+path+',MD5签名为:'+str+'.耗时:'+(new Date().getTime()-start)/1000.00+"秒");
});

编辑日期2019-12-2日