Xcode9 xcodebuild export plist 配置
文章目录
- 前言
- 一、现象
- 二、原因
- 三、解决步骤
- 四、示例
- 五、参考
前言
在你的iOS
团队中,如果在使用持续集成来完成自动化打包分发的工作,你可能会了解如何使用一些命令行工具来构建ipa
文件,其中一款使用较为广泛的是xcodebuild
。
在我们的团队中有部分打包工作就是使用的xcodebuild
,脚本代码大概如下:
ipaName = "${scheme}${buildConfiguration}"
// archive
xcodebuild -workspace ProjectName.xcworkspace -scheme ${scheme} -configuration ${buildConfiguration} clean archive -archivePath ./${ipaName}.xcarchive
// export
xcodebuild -exportArchive -archivePath ${ipaName}.xcarchive -exportOptionsPlist exportOptions_dev.plist -exportPath ./
exportOptions_dev文件如下:
<?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>method</key><string>development</string><key>teamID</key><string>yourTeamID</string>
</dict>
</plist>
以上配置在Xcode8
及以下版本都可以正常运行的,在升级Xcode9
以后上面的脚本会在export
阶段出错。
一、现象
- xcodebuild + Xcode9
使用xcodebuild
做打包构建时,执行exportArchive
命令出错,错误信息:
error: exportArchive: "AppName.app" requires a provisioning profile with the Push Notifications and App Groups features.
Error Domain=IDEProvisioningErrorDomain Code=9
"AppName.app" requires a provisioning profile with the Push Notifications and App Groups features." UserInfo={NSLocalizedDescription="AppName.app" requires a provisioning profile with the Push Notifications and App Groups features., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
// 或
"Error Domain=IDEProvisioningErrorDomain Code=9 \"\"ios-simple-objc.app\" requires a provisioning profile.\"
UserInfo={NSLocalizedDescription=\"ios-simple-objc.app\" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the \"provisioningProfiles\" dictionary in your Export Options property list.}"
二、原因
Xcode9 的打包需要指定以下信息,才能完成export
操作:
- provisioningProfiles
- compileBitcode
- method
- signingCertificate
- signingStyle
- stripSwiftSymbols
- teamID
- thinning
三、解决步骤
你需要使用Xcode9
先手动构建一次,使用构建生成的plist
配置就可以完成export
操作。
使用
Xcode9
打开你的工程
执行打包操作:Product -> Archive
打包完成后执行
export
操作(其中会需要你手动选择你的相关provison profile
等信息),Xcode9
会自动生成exportOptionsPlist
文件,同时拷贝到你生成的ipa
包的同级目录下。
- 直接使用
Xcode9
自动生成的exportOptionsPlist
文件来进行xcodebuild
的export
操作,或者拷贝文件内容到你原来的exportOptionsPlist
文件。
// Xcode9 export 生成的文件
DistributionSummary.plist
ExportOptions.plist
AppName.ipa
Packaging.log
四、示例
<?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>compileBitcode</key><true/><key>method</key><string>development</string><key>provisioningProfiles</key><dict><key>com.xingshulin.abc</key><string>abc_dev</string><key>com.xingshulin.abc.NotificationServiceExtension</key><string>abc-Notification-dev</string></dict><key>signingCertificate</key><string>iPhone Developer</string><key>signingStyle</key><string>manual</string><key>stripSwiftSymbols</key><true/><key>teamID</key><string>yourTeamID</string><key>thinning</key><string><none></string>
</dict>
</plist>
五、参考
New export options Plist in Xcode 9
Xcode9 xcodebuild export plist 配置相关推荐
- Xcode9 xcodebuild 命令行打包遇到的坑与解决方案
主要涉及的打包脚本命令 if [ $xcodeversion -lt 830 ] then #Xcode 8.3 以下打包时使用该脚本 xcodebuild -exportArchive -expor ...
- iOS9网络适配 info.plist配置
<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key&g ...
- iPhone X适配以及iOS 11可能出现的常见崩溃(info.plist配置)
iPhone X适配 程序启动图,引导图等 iPhone X像素尺寸1125x2436,也就是说,你的启动图或者是闪屏页,App引导图等得新加一个图了,另外iPhone X用的是三倍图,开发用的逻辑分 ...
- iOS持续集成-Xcodebuild命令
为什么 打包一般使用GUI操作进行.但是对于复杂工程还是繁琐.比如同一个工程对应多个target,多个scheme,多个证书.另外对于持续化集成还不足够,所以需要使用Xcodebuild进行脚本化. ...
- iOS 11和xcode9
最近发现了比较奇怪的问题,就是 ios10.几以前的版本,用xcode9 编写的程序 如果程序写的table是 plain的 ,那么 在 ios10.几及以下版本都会显示成group样式, ...
- Mac 下 Nginx、PHP、MySQL 和 PHP-fpm 的安装和配置
原文:Mac 下 Nginx.PHP.MySQL 和 PHP-fpm 的安装和配置 个人博客永久地址. 文章做了更新,增加了php-fpm的配置相关信息. 杂七杂八的杂 Mac下搭建MNPM环境是每个 ...
- 【iOS小白教程】如何打包:xcodebuild和xcrun介绍
摘抄自2016-06-25-ios-xcodebuild xcodebuild 简介 xcodebuild 用于编译xcode中的projects和workspaces 文档 1 在终端中输入 $ m ...
- IOS xcodebuild
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//A ...
- xcodebuild命令的使用
最近再看xcodebuild使用,毕竟个人感觉命令行的方式比在界面上来的快,这里记录了一下心得. 首先,终端输入 man xcodebuild 下面是man输出的文档,大致做了一下重点 xcodebu ...
最新文章
- 机器学习中的数学基础:(1)实际应用中矩阵特征值与特征向量的几何意义
- Your First Concordion.Net Project (Part 5)-Running Specs with Gallio
- C 线程中容易忽视的 restrict 修饰符修饰
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)下标运算符[]
- 一个简单的三层架构例子(.NET入门)
- 成都Uber优步司机奖励政策(4月2、3日)
- C++设计模式之Template Method(模板方法模式)
- linux mate桌面主题下载_5个适用于Linux的最佳图标主题
- 中国统计年鉴(1978-2020年)
- 2021-10-20
- java实现socket长连接_java如何实现Socket的长连接和短连接
- 【汇编】2、从汇编源码逐步分析函数调用过程
- python给图片加边框,照片加边框,照片加描边,图片加描边,批量给图片加描边
- pip install使用豆瓣库
- CSS-animation-梦幻西游小案例
- 生产服务器变慢了排查思路
- 斯坦福教授告诉你:什么是多任务学习「 CS330 笔记 (二) 」
- npm install安装时卡在sill idealTree buildDeps,npm安装速度慢,npm安装卡在一个地方不动,npm遇到ssl问题,An unknown git error occu
- SpringBoot项目移除bean
- 关于专栏收费的公告与费用用途
热门文章
- error#10052:could not checkout FLEXlm license
- 使用c++实现学生成绩管理系统
- jira的详细安装和破解
- [原]查找透明表的实用方法
- 旁挂二层组网隧道转发
- 哥特体css样式叫什么,css – 世纪哥特字体可用性问题
- Openjudge:奥运奖牌计数
- 2021-06-02web渗透学习WindowsXP/2003 Lpk提权
- java编程入门pdf_Java 8编程入门官方教程(第6版) [(美)Schildt H.] 中文完整pdf扫描版[233MB]...
- ajaxSubmit提交数据重复