今天由于业务需要,需要导出线上包的Profiles文件,这不是so eazy的事情吗!
可当我进入苹果开发者网站,就傻眼了,我再三确认我没有进错开发者账号。我这个开发者账号上是有线上包的,怎么provisionning Profiles里面是空的呢?——估计是Xcode自动生成证书和profile文件导致的,profile文件只会本地保存不会上传到云端。
那么问题来了,如何导出Xcode自动生成的签名描述文件呢?
楼主还是倒腾了很久的,过程就不细说了,直接分享结果吧。
解决方案
思路:Xcode管理的.mobileprovision文件(无论是自动生成的还是你手动创建导入Xcode的)都在这个目录~/Library/MobileDevice/Provisioning Profiles,在这个目录中找到你要的.mobileprovision文件即可。
如果你有自己的方法找到,就不需要往下看了。
楼主进入这个目录直接在窗口里搜索bundle identifer发现搜不到,可能是因为.mobileprovision是一个二进制文件,直接搜搜不到,也有可能是我电脑有问题,你可以试试。
那就用强大的shell命令吧!
1.打开终端输入下列命令,回车,进入到Xcode管理的.mobileprovision文件目录
cd /Users/`whoami`/Library/MobileDevice/Provisioning\ Profiles/
whoami 命令读取系统用户名
2.继续输入下列命令,回车,把com.tencent.xin换成你的bundle identifier
grep -r -l com.tencent.xin .
-r递归查找,因为.mobileprovision是一个二进制文件,不加会报错
-l只显示文件名
一般情况下会有下列结果(除非你手动创建了好多个),这就是你要找的文件,一个是develop的,一个是distribution。
3.那怎么区分dev和dis呢?
方法一:继续输入下面的代码,会打开Finder并选中文件。选中这个文件后,按空格键,会生成mobileprovision文件的预览窗口,里面会显示对应的信息(如果你的没有请看方法二),仔细找一下就能区分了。
open -R ./5b857e06-f2ed-4256-88a3-0d7847e34371.mobileprovision
方法二:楼主的公司的电脑可以显示预览内容,家里的电脑却不行,如图。我也不知道为什么。
Mac下可以用如下命令打印.mobileprovision文件的内容
security cms -D -i ./5b857e06-f2ed-4256-88a3-0d7847e34371.mobileprovision
打印结果如下,是一个XML文件,如果有ProvisionedDevices字段(设备列表),说明是dev版本的,dis版本的没有这个字段。
<?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>AppIDName</key>
<string>aaa</string>
<key>ApplicationIdentifierPrefix</key>
<array>
<string>X9ASDF2345</string>
</array>
<key>CreationDate</key>
<date>2018-02-03T14:19:45Z</date>
<key>Platform</key>
<array>
<string>iOS</string>
</array>
<key>DeveloperCertificates</key>
<array>
<data>MIIFmjCCBIKgAwIBA..省略
</array>
<key>Entitlements</key>
<dict>
<key>keychain-access-groups</key>
<array>
<string>X9ASDF2345.*</string>
</array>
<key>get-task-allow</key>
<true/>
<key>application-identifier</key>
<string>X9ASDF2345.com.xxxx.aaa</string>
<key>com.apple.developer.team-identifier</key>
<string>X9ASDF2345</string>
</dict>
<key>ExpirationDate</key>
<date>2019-02-03T14:19:45Z</date>
<key>Name</key>
<string>iOS Team Provisioning Profile: com.xxxx.aaa</string>
<key>ProvisionedDevices</key>
<array>
<string>6126203adse3dbab4012374e5c01e2a497b9aa66</string>
</array>
<key>TeamIdentifier</key>
<array>
<string>X9SABCD345</string>
</array>
<key>TeamName</key>
<string>xiaoming</string>
<key>TimeToLive</key>
<integer>365</integer>
<key>UUID</key>
<string>5b857e06-f2ed-4256-88a3-0d7847e34371</string>
<key>Version</key>
<integer>1</integer>
</dict>
参考链接:
Mac Security工具使用总结find-identity
mobileprovision shell 读取