文章背景
最近在接游戏发行方SDK时,游戏发行方提供的.mobileprovision
文件不符合我司自动打包时配置的一些参数格式。我司让发行方重新生成.mobileprovision
文件,发行方拒绝了并告诉我司可以直接打开.mobileprovision
文件并修改其中的 name
(含义为.mobileprovision
文件名)值。
我的第一反应是该文件无法被修改,且修改后不能用。但为了在后续沟通中占据主导权,我研究了一下 .mobileprovision
文件的修改。
基础介绍
.mobileprovision
文件是由苹果生成的二进制文件,内部结构完全由苹果定义。
.mobileprovision
文件用于应用的签名和授权。它包含了应用程序标识符、开发者证书、设备列表等信息。
- 申请*
.mobileprovision
* 文件, 可参考 iOS证书(.p12)和描述文件(.mobileprovision)申请指南
另外,直接修改二进制文件极大可能导致文件损坏或无效。
1、查看 .mobileprovision
.mobileprovision
文件是二进制文件,使用文本编辑器(如TextEdit
、Sublime Text
、Visual Studio Code
等)打开.mobileprovision
文件,会看到一些乱码。
- 使用Xcode查看
mobileprovision
文件:
- 这种方式只能看到
mobileprovision
文件的部分内容,无法编辑。
- 使用终端指令查看*
mobileprovision
文件:security cms -D -i /path/to/your.mobileprovision
- 可以查看
mobileprovision
文件所有内容,无法编辑。
2、编辑.mobileprovision
通过终端指令的方式编辑.mobileprovision
:
- 使用命令行工具
security
导出.mobileprovision
文件的内容,将其保存为文本文件:security cms -D -i /path/to/MobileProvision.mobileprovision > output.plist
- 打开导出的
output.plist
文件,可以使用文本编辑器或命令行工具进行修改。找到"name"键所对应的值,并进行修改。
- 修改完成后,将
output.plist
文件重新导出为.mobileprovision
文件:
security cms -D -i output.plist -o modified.mobileprovision
- 执行完 3 后,终端报错,但仍旧生成了
modified.mobileprovision
。
- 双击打开
modified.mobileprovision
,Xcode报错:
- UUID可以理解为文件的唯一标识,在
linux
中经常用,因为linux
一切皆文件,所以你的硬件设备也是文件,他也会有UUID。
- 每个文件都有UUID,UUID是通过系统自动生成的。我们无法操控。
3、结论
- 苹果不允许我们手动修改
.mobileprovision
文件; - 修改
.mobileprovision
文件 前后,该文件的 MD5值发生变化; - 经测试,在删除
.mobileprovision
文件后,Xcode也会提示UUID属性缺失。猜测UUID就是简单的UUID,XcodeUUID错误,也只是新的.mobileprovision
文件没有通过过苹果认证然后报错的,只是就是展示了这个错误而已。