参考 :

https://www.jianshu.com/p/32af2f71b4e5--老了,里面的一些命令现在都没有了,但可以借鉴思路

https://www.jianshu.com/p/004c9346f9b0

1.切换到工程所在目录

打开终端,输入 cd ,并将工程所在文件夹拖入cd 后面,回车。(即.xcodeproj工程所在的位置)

2.清除

在终端继续输入xcodebuild clean,回车等待,clean成功后截图如下。

xcodebuild clean

3.构建

xcodebuild archive -project /Users/chenpeisong/Desktop/test/HelloWorld/HelloWorld.xcodeproj -scheme HelloWorld -archivePath /Users/chenpeisong/Desktop/HelloWorld.xcarchive

说明:

-archive -project 后面跟工程路径
/Users/chenpeisong/Desktop/test/HelloWorld/HelloWorld.xcodeproj -scheme 需要打包的Sheme,一般与工程名相同
HelloWorld -archivePath 后面跟.xcarchive文件的目标路径可以自己自由设置
/Users/chenpeisong/Desktop/HelloWorld.xcarchive

archive成功后截图

4.打包

xcodebuild -exportArchive -exportOptionsPlist /Users/chenpeisong/Desktop/ExportOptions.plist -archivePath /Users/chenpeisong/Desktop/HelloWorld.xcarchive -exportPath HelloWorld

说明:

-exportArchive
-exportOptionsPlist plist文件路径,包含证书信息
-archivePath .xcarchive文件路径
-exportPath ipa文件目标路径

其中关键就是exportOptionsPlist 文件需要在之前通过xcode打包导出ipa时的文件夹中去copy一个出来放在当前工程目录中,然后将其拖入-exportOptionsPlist 后面即可。

打包成功后截图:

可以看到HelloWorld文件夹中已经生成了helloworld.ipa文件

附:

plist文件是什么?

打开plist文件长这样

plist字段说明:

method:字符串,为打包的类型,分为app-store,ad-hoc,enterprise和development,根据自己实际打包情况填写。

provisioningProfiles:字典,Xcode9需要,键值对为{bundleid:描述文件名},描述文件名最好使用其对应的UUID。

signingCertificate:证书类型,开发环境为iPhone Developer,生产环境为iPhone Distribution。

signingStyle:自动还是手动(manual与automatic),填写manual即可。

stripSwiftSymbols:填写为YES。

teamID:为开团队ID,在钥匙串中点击证书详情可以查看到。

uploadBitcode:为YES即可。

uploadSymbols:为YES即可

现在有一个问题是:生成archive文件 和ipa文件的过程中都需要输入登录密码怎么办?

 解决办法:

(这是临时的解决办法-在自动化打包时肯定不能这样的吧)又走了一遍流程,这次点击了【始终允许】,就不弹出了

或者参考这篇文章

https://blog.csdn.net/xiao_wu_xiao/article/details/50961661

最新文章

  1. 初次接触nodejs,请多指教。
  2. Swift实现截屏并保存相册
  3. iOS中NSLog的输出格式
  4. 能够提高开发效率的 Eclipse 实用操作
  5. oracle 语句优化
  6. [BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】
  7. JavaScript 高级程序设计(第3版)笔记——chapter3:基本概念(函数部分)
  8. this.button1.Click += new System.EventHandler(this.button1_Click);
  9. js内存泄露的原因
  10. sprintf()、fprintf()、fscanf()的用法
  11. Android开发之深入理解Android 7.0系统权限更改相关文档
  12. Lookup dict 并将属性更新于lookupdict object中
  13. ASM检查RAC是否成功
  14. linux 查看CPU、内存、磁盘信息命令
  15. 8 commands to check cpu information on Linux
  16. addEventListener在一个节点上添加多个相同的事件
  17. hive函数 parse_url的使用
  18. BZOJ 3357--[Usaco2004]等差数列(STL&DP)
  19. js valueOf()函数用于返回指定对象的原始值
  20. php中array_map和array_walk的使用对比_php技巧

热门文章

  1. 1、Laravel 环境配置及安装
  2. 洛谷P1265 公路修建——prim
  3. Navicat 破解方法
  4. java的spi(Service Provider Interface)机制及源码(java8)
  5. Codeforces Round #460 (Div. 2) B Perfect Number(二分+数位dp)
  6. BUUCTF--xor
  7. PyInstaller库的使用
  8. 消费者与生产者---LinkedList方式模拟
  9. ubuntu root用户 phpstorm软件不能使用中文输入法
  10. AGC002[BCDEF]题解