如何导出Xcode自动生成的Provisioning Profiles文件

今天由于业务需要,需要导出线上包的Profiles文件,这不是so eazy的事情吗!


3028987-76e75b8d08d4c470.png
百度联盟需要上传签名描述文件

可当我进入苹果开发者网站,就傻眼了,我再三确认我没有进错开发者账号。我这个开发者账号上是有线上包的,怎么provisionning Profiles里面是空的呢?——估计是Xcode自动生成证书和profile文件导致的,profile文件只会本地保存不会上传到云端。

3028987-3aa2a4ff1142530a.png
苹果开发者网站

那么问题来了,如何导出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。


3028987-74bc3c57bf43483e.png
查询结果

3.那怎么区分dev和dis呢?
方法一:继续输入下面的代码,会打开Finder并选中文件。选中这个文件后,按空格键,会生成mobileprovision文件的预览窗口,里面会显示对应的信息(如果你的没有请看方法二),仔细找一下就能区分了。

open -R ./5b857e06-f2ed-4256-88a3-0d7847e34371.mobileprovision

方法二:楼主的公司的电脑可以显示预览内容,家里的电脑却不行,如图。我也不知道为什么。


3028987-737b226b184db5e3.png
不能显示详细的预览信息

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 读取

猜你喜欢

转载自blog.csdn.net/weixin_33804582/article/details/87483945
今日推荐