IOS 企业签名

参考:https://blog.csdn.net/u012453582/article/details/80318143

企业签名步骤:

1、首先得有一个企业级的账号,然后 生成证书,注册App ID,然后生产描述文件 

2、生成一个 entitlements.plist 内容如下:

生成entitlements.plist的方法最好通过 security cms -D -i xxx.mobileprovision 获取他的 Entitlements key的内容




	keychain-access-groups
	
		TeamID.*
	
	get-task-allow
	
	application-identifier
	 TeamID.企业账号上生成的描述文件对应的APPID
	com.apple.developer.team-identifier
	 TeamID 
	aps-environment
	production


注意上面的TeamID 要根据你企业账号填对应的值, 还有描述文件生成对应选择的AppId 要按照你的实际情况写

3、下载 生成的证书,描述文件下载安装。然后将上面生成的 entitlements.plist 和 下载描述文件( xxx.mobileprovision )放到一个目录下 

4、将要签名的ipa 也放入上面的目录下 然后。 unzip  xxxx.ipa

5、进入解压ipa生成的目录。 Payload/xxx.app  删除 embedded.mobileprovision 然后将你自己企业账号生成的描述文件 xxx.mobileprovision 放入 替换原先的 embedded.mobileprovision

rm Payload/xxx.app/embedded.mobileprovision
cp xxx.mobileprovision Payload/xxx.app/embedded.mobileprovision

6、重新签名

codesign -f -s '你企业证书对应的签名名字 如 iPhone Distribution: Hunan Qi Neng Science and Technology Co.,Ltd'  --entitlements entitlements.plist Payload/xxx.app

7、将签名后的 Payload 目录压缩成 ipa

zip -r out_signed.ipa Payload

完成。

本人为了精简打包过程特地写了个快捷打包的脚本,代码如下:

#!/bin/sh

outfilename="signed.ipa"

clearoldinfo()
{
	rm $outfilename
	echo "rm $outfilename"
	rm -rf Payload
	echo "rm -rf Payload"
	
}

getvalueRet=""
getvalue()
{
	defaultvalue=$(ls $2)
	echo $1 "default value=$defaultvalue enter use defaultvalue"
	read value
	
	if [ $value=="" ]
	then
		value=$defaultvalue	
	fi
	
	getvalueRet=$value	
}

dopackage()
{
	clearoldinfo

	getvalue "请输入签名原包路径(xxx.ipa)" *.ipa
	originPackagePath=$getvalueRet
	unzip $originPackagePath > /dev/null

	getvalue "请输入签名的签名描述文件路径(xxx.mobileprovision) " *.mobileprovision
	mobileProvisionPath=$getvalueRet

	appName=$(ls Payload | grep .app)
	echo "the package appname is: $appName"
	rm Payload/$appName/embedded.mobileprovision
	cp $mobileProvisionPath Payload/$appName/embedded.mobileprovision
	
	getvalue "请输入签名使用的 entitlements.plist 文件路径" *.plist
	entitlementpath=$getvalueRet

	echo "请从下面可用的选择可用的企业名称输入"
	security find-identity -v -p codesigning
	read name

	echo "read $name"
	echo "codesign -f -s $name --entitlements $entitlementpath Payload/$appName"
	codesign -f -s "$name" --entitlements $entitlementpath Payload/$appName
	# codesign -f -s "iPhone Distribution: Z MANTIS KAI SIA E.E."  --entitlements entitlements.plist Payload/luaxymj-mobile.app
	# echo "codesign -f -s $name --entitlements $entitlementpath Payload/$appName"
	echo "zip -r $outfilename Payload"
	zip -r $outfilename Payload > /dev/null
	echo "resigned success outfileis: $(pwd)/$outfilename"
}

if [ $# -ne 0 ]
then
	if [ $1=="clean" ]
	then
		clearoldinfo	
	fi
else
	dopackage
fi

使用方法为,将  描述文件 xxx.mobileprovision  entitlements.plist xxx.ipa 放到一个目录,然后执行脚本,然后一路回车,中途按照提示选择copy输入下签名需要选择的签名名称就行了。

IOS 企业签名_第1张图片

你可能感兴趣的:(IOS)