NativeScript iOS发布:生产配置文件来源及获取机制咨询
关于NativeScript iOS发布时生产配置文件的疑问解答
我之前也对这个点感到困惑过,正好可以给你梳理清楚:
配置文件的来源:NativeScript会自动下载
你删除~/Library/MobileDevice/Provisioning Profiles目录后构建仍正常,是因为NativeScript的tns publish ios命令会直接从Apple开发者后台自动拉取所需的生产配置文件,完全不需要依赖本地这个目录的文件。
具体来说,当你执行命令时提供了Apple ID、密码和Team ID,NativeScript会通过Apple的开发者门户API,直接获取与你的项目匹配的生产配置文件(包括对应的分发证书),并临时存储在项目的构建临时目录中(比如platforms/ios/build/下的相关子文件夹),构建完成后这些临时文件可能会被清理或保留,但不会写到你删除的那个本地配置文件目录里。
NativeScript如何确定使用哪份配置文件?
它的匹配逻辑是这样的:
- 首先读取你项目中的bundle ID(在
app/App_Resources/iOS/Info.plist里的CFBundleIdentifier字段); - 然后去你的Apple开发者账号中查找状态为Active、且与该bundle ID精确匹配的生产配置文件;
- 如果找不到精确匹配的,会尝试匹配通配符类型的生产配置文件(比如bundle ID为
com.yourcompany.*的); - 要是连通配符的都没有,只要你的账号有足够权限,NativeScript甚至会自动帮你创建一个符合要求的生产配置文件(前提是该bundle ID已经在开发者后台注册过)。
账号下存在多份生产配置文件时会怎样?
如果你的Apple开发者账号里有多个针对同一个bundle ID的生产配置文件(比如不同设备组、不同创建时间的),NativeScript会按以下优先级选择:
- 优先选择最新创建的Active状态配置文件;
- 如果有精确匹配bundle ID和通配符的配置文件,精确匹配的优先级远高于通配符;
- 要是出现配置文件冲突(比如多个配置文件状态都是Active且匹配),一般会在构建日志里给出提示,但多数情况下NativeScript会自动选择最合适的那一份,不会影响正常构建。
内容的提问来源于stack exchange,提问作者dashman
相关产品推荐
相关产品推荐

