参考:

打包的具体操作步骤:

  https://www.jianshu.com/p/6a0aa8cd2e97

打包时使用到的参数详解,参考这篇:

  https://debugtalk.com/post/iOS-Android-Packing-with-Jenkins-details/index.html

xcodebuild命令详解:

  https://www.jianshu.com/p/770d5df137bf

注意:

补充一点:

  xcodeproj和xcworkspace的区别是:xcworkspace使用了cocoapods来管理第3方库

  采用Cocoapod管理项目依赖,每次拉取最新代码后直接编译可能会报错。这往往是因为其他同事更新了依赖库(新增了第三方库或升级了某些库),而本地还采用之前的第三方库进行编译,从而会出现依赖库缺失或版本不匹配等问题。

  应对的做法是,在每次build之前都更新一下Cocoapod。

  1. # Update pod repository
  2. pod repo update
  3. # Install pod dependencies
  4. pod install

  配置完后,先进行构建 ,可以 拉到代码 再进行第2步的修改

  可以看到已经将代码 clone到本地了

在执行正式的脚本前,要做一些准备工作:

ios使用pods管理第三方库,每次构建job时,需要先更新pods库

。和python中用pip管理第3方库类似。不更新第3方库,将导致程序中依赖第3方库的功能不可用

  1. export LANG=en_US.UTF-8
  2. # xcworkspace文件所在目录
  3. TARGET_PATH="trunk/5iwork/ios"
  4. #Podfile路径
  5. PODFILE=${WORKSPACE}/${TARGET_PATH}
  6.  
  7. cd ${PODFILE}
  8.  
  9. echo -e "============Update pod repository============"
  10. pod repo update
  11.  
  12. echo -e "============Install pod dependencies============"
  13. echo ${PODFILE}
  14. pod install

注意这些命令要在项目目录xcworkspace文件所在目录执行

打包脚本:

  1. ## !/bin/sh
  2. ## 项目名
  3. TARGET_NAME="cbs_new5iwork"
  4. ## xcworkspace文件所在目录
  5. TARGET_PATH="trunk/5iwork/ios"
  6. ## Scheme名
  7. SCHEME="cbs_new5iwork"
  8. ##=======================
  9. ## 编译类型
  10. BUILD_TYPE=staging #jenkins布署环境,通过代码配置的:打包uat时选择的是staging|线上对应的是Release,Release包需要开发打包
  11. #BUILD_TYPE="Release" #测试编译类型
  12. ## 当前目录
  13. SORCEPATH=${WORKSPACE} #jenkins job配置目录
  14. #SORCEPATH="/Users/5i5j/Desktop" #测试路径
  15. # workspace名
  16. SPACE=${WORKSPACE}/${TARGET_PATH}/${TARGET_NAME}.xcworkspace
  17. ##xcarchive文件的存放路径
  18. ARCHIVEPATH=${SORCEPATH}/build/${SCHEME}.xcarchive
  19. ## ipa文件的存放路径
  20. EXPORTPATH=${SORCEPATH}/build/${SCHEME}
  21. ## ExportOptions.plist文件的存放路径
  22. #EXPORTOPTIONSPLIST=$SORCEPATH/build/ExportOptions.plist
  23. EXPORTOPTIONSPLIST=${WORKSPACE}/${TARGET_PATH}/cbs_new5iwork/Resources/ExportOptions.plist
  24.  
  25. ## 导出后的ipa路径
  26. EXPORTPATHIPA=${SORCEPATH}/build/${SCHEME}/${SCHEME}.ipa
  27.  
  28. ## 清理老的xcarchive文件
  29. rm -rf ${ARCHIVEPATH}
  30.  
  31. echo -e "============First Build Clean============"
  32. ## 清理缓存
  33. xcodebuild clean -workspace ${SPACE} -scheme ${SCHEME} -configuration ${BUILD_TYPE}
  34.  
  35. echo -e "============Build Clean============"
  36. ## 输出关键信息
  37. echo -e " TARGET_NAME : ${TARGET_NAME}"
  38. echo -e " BUILD_TYPE : ${BUILD_TYPE}"
  39. echo -e " SORCEPATH : ${SORCEPATH}"
  40. echo -e " ARCHIVEPATH : ${ARCHIVEPATH}"
  41. echo -e " EXPORTPATH : ${EXPORTPATH}"
  42. echo -e " EXPORTOPTIONSPLIST : ${EXPORTOPTIONSPLIST}"
  43.  
  44. echo -e "============Build Archive============"
  45.  
  46. ## 导出archive包
  47. xcodebuild archive -workspace ${SPACE} -scheme ${SCHEME} -archivePath ${ARCHIVEPATH} -configuration ${BUILD_TYPE}
  48.  
  49. echo -e "============Build Archive Success============"
  50.  
  51. echo -e "============Export IPA============"
  52.  
  53. ## 导出IPA包
  54. xcodebuild -exportArchive -archivePath ${ARCHIVEPATH} -exportPath ${EXPORTPATH} -exportOptionsPlist ${EXPORTOPTIONSPLIST}
  55.  
  56. echo -e "============Export IPA SUCCESS============"
  57.  
  58. ## 编译完成时间 20181030_0931
  59. BUILD_DATE="$(date +'%Y%m%d_%H%M')"
  60.  
  61. ## info.plist路径
  62. PROJECT_INFOPLIST_PATH="${SORCEPATH}/${TARGET_PATH}/${TARGET_NAME}/Info.plist"
  63. ## 取版本号
  64. BUNDLESHORTVERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${PROJECT_INFOPLIST_PATH}")
  65. ## 取build值
  66. VERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${PROJECT_INFOPLIST_PATH}")
  67. ## ipa更名规则 项目名V版本_年月日_时分
  68. IPANAME="${TARGET_NAME}V${BUNDLESHORTVERSION}_${BUILD_DATE}.ipa"
  69. ## 更名后ipa路径
  70. EXPORTPATHNEWIPA=${EXPORTPATH}/${IPANAME}
  71.  
  72. echo -e "============Export end :${BUILD_DATE}============"
  73. echo -e "============IPA Old Name: ${EXPORTPATHIPA}============"
  74. echo -e "============IPA New Name: ${EXPORTPATHNEWIPA}============"
  75.  
  76. ## IPA更名
  77. cp $EXPORTPATHIPA $EXPORTPATHNEWIPA
  78.  
  79. echo -e "============Create New Name Success============"
  80.  
  81. ## 删除老IPA
  82. ##rm $EXPORTPATHIPA
  83.  
  84. ##echo -e "============Delete Old Name Success============"

iOS 命令行打包--xcworkspace的更多相关文章

  1. mac下使用命令行打包出现bash gradle command not found的解决方案

    命令行打包的时候出现 bash gradle command not found这个问题,主要是因为gradle环境丢失.需要重新配置gradle的环境变量. 1. gradle路径的查找 然后gra ...

  2. android 7.0 多渠道打包 - 美团开源工具Walle 命令行打包

    在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅-生成渠道包)已经行不通了,对此美 ...

  3. IOS 命令行编译

    转自:简书 IOS 命令行编译   发表于 IOS2013-08-17 07:07 字数: 583 阅读量: 61 This document will note about the ios comm ...

  4. IOS使用命令行打包

    1.安装证书 develop:调试证书,包含调试信息 安装时需要证书已加入设备UDID或是越狱设备才能安装. distribution:正式证书,发布到appstore所用,屏蔽了调试信息,要想测试安 ...

  5. xcodebuild命令行打包发布ipa

    配置好证书,然后在命令行转到项目目录 1.清除 EthantekiiMac:CTest ethan$ xcodebuild clean 2.编译 EthantekiiMac:CTest ethan$ ...

  6. 使用命令行打包 nuget 包

    对于那些不打算涉及这么复杂而又想制作自己的 nuget 包的园友们,我是推荐使用 Nuget Package Explorer 来制作的.关于这个图形化的 nuget 包管理软件的使用,博客园内有相关 ...

  7. [原] Android自动打包之命令行打包

    Android自动打包流程详细图: 总结为以下几个步骤: 1. 生成R文件 2. Java代码编译成class文件 3. class文件生成dex文件 4. 打包资源 5. 生成apk 6. 创建密匙 ...

  8. Unity命令行打包

    http://www.66acg.com/?post=137 补充 unity编辑器端获取打包命令行自定义参数,这个可以获取到所有打包时的参数 string[] runArgs = System.En ...

  9. Maven环境配置及命令行打包

    一配置环境变量 下载 apache-maven-3.2.5压缩包解压到本地  F:\apache-maven-3.2.5 配置MAVEN_HOME环境变量F:\apache-maven-3.2.5如图 ...

随机推荐

  1. 能够打开国内网络,比如百度微信,但是打不开外国网站,该怎么解决(主要是DNS的问题)

    (1)公司设置局域网外网打不开解决方法一: 如果是代理服务器上网,是因为服务上没有映射好外网访问网页的!解决方法是在服务器上开一个端口映射软件! 如果是路由器上网,就是路由器上没有映射外网访问的端口, ...

  2. Chrome开发者工具详解(二)之使用断点调试代码下

    JS调试技巧 技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置 右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟checkbox同一行的会暂时取消这个断点,若是点击chec ...

  3. jQuery进阶第二天(2019 10.10)

    一.事件流程 1.事件的三要素: 事件源:发生事件的对象 事件类型:类型比如单击.双击.鼠标的移入.移除 事件处理程序: 触发事件之后做些什么,事件处理的函数 <body> <but ...

  4. github配置及使用

    安装git 对于linux系统,不同发行版本的安装方法不一样,请参考https://git-scm.com/download/linux.以ubuntu为例: sudo add-apt-reposit ...

  5. Qt的QSettings类和.ini文件读写

    Detailed Description QSettings类提供了持久的跨平台的应用程序设置.用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表 ...

  6. CSS3边框 阴影 box-shadow

    box-shadow是向盒子添加阴影.支持添加一个或者多个. box-shadow: X轴偏移量 Y轴偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色] [投影方式]; 参数介绍: box-sh ...

  7. hadoop学习一

    一.基本概念https://blog.csdn.net/gwd1154978352/article/details/81095592 二.安装hadoophttps://blog.csdn.net/s ...

  8. CentOS8 安装部署Apache+Php+MariaDB(pdo扩展)

    使用新的CentOS8系统架设PHP服务器,因现在主流数据库mysql已闭源了,所以现在改为使用MariaDB.而php7以后不支持mysqli链接,只有pdo方式,为了安装pdo扩展,所以重新编译安 ...

  9. 滑块QAbstractSlider

    继承于 QWidget 抽象类-必须子类化 提供的范围内的整数值 QAbstractSlider import sys from PyQt5.QtWidgets import QApplication ...

  10. 【python】对于程序员来说,2018刑侦科推理试卷是问题么?

    最近网上很火的2018刑侦科推理试卷,题目确实很考验人逻辑思维能力. 可是对于程序员来说,这根本不是问题.写个程序用穷举法计算一遍即可,太简单. import itertools class Solu ...