xcidebuild

apple 官网 xcodebuild 文档

使用 shell 实现 clean、build、archive、export 等功能
自动化构建主要还是使用 clean、archive、export

  • 先用 xcode 手动打个包,比如 ad_hot 的包并导出,可以得到 ipa 包,以及「ExportOptions.plist」以供后续使用(打 appstore 包,也会有一个)

project 自动签名

#!/bin/bash
# jenkins 下,默认是项目文件夹,也是默认参数(此处用以本机测试)
WORKSPACE=~/Desktop/test# 项目路径
PROJECT_NAME="test"
TARGET_NAME="test"
PROJECT_PATH=${WORKSPACE}/$PROJECT_NAME.xcodeproj# 输出配置
# EXPORT_OPTIONS_PLIST 的 plist 就是打包来的 ExportOptions.plist,修改了名字
EXPORT_OPTIONS_PLIST=${WORKSPACE}/export/export_ad_hot.plist
RES_DIR=~/Desktop/${TARGET_NAME}pack
RES_ARCHIVE_PATH=${RES_DIR}/ach.xcarchive
RES_IPA_DIR=${RES_DIR}/ipa
RES_IPA_PATH=${RES_IPA_DIR}/${TARGET_NAME}.ipa# clean
xcodebuild OTHER_CFLAGS="-fembed-bitcode" clean -project $PROJECT_PATH -scheme $TARGET_NAME# archive
xcodebuild OTHER_CFLAGS="-fembed-bitcode" archive -archivePath $RES_ARCHIVE_PATH  -project $PROJECT_PATH -scheme $TARGET_NAME# export
xcodebuild OTHER_CFLAGS="-fembed-bitcode" -exportArchive -archivePath $RES_ARCHIVE_PATH -exportPath $RES_IPA_DIR -exportOptionsPlist $EXPORT_OPTIONS_PLISTecho "打包成功:${RES_IPA_PATH}"

workspace 手动签名

#!/bin/bash
# jenkins 下,默认是项目文件夹,也是默认参数(此处用以本机测试)
WORKSPACE=~/Desktop/qiakrexport LC_ALL=zh_CN.GB2312;export LANG=zh_CN.GB2312# 项目路径
WORKSPACE_NAME="xxx"
TARGET_NAME="xxx"
WORKSPACE_PATH=${WORKSPACE}/RealCloud/xxxx/${WORKSPACE_NAME}.xcworkspace# 项目配置
BUILD_CONFIG="Release"
PRODUCT_BUNDLE_IDENTIFIER="com.xxx.xxxx.app"
CODE_SIGN_IDENTITY="iPhone Distribution: Hangzhou xxxx Technology Co, Ltd. (xxxx)"
PROVISIONING_PROFILE="xxxx-e40b-487b-8a2c-xxxxx"
ENABLE_BITCODE="YES"# 输出配置
EXPORT_OPTIONS_PLIST=~/Desktop/ad_hot_qa.plist
RES_DIR=~/Desktop/${TARGET_NAME}-pack
RES_ARCHIVE_PATH=${RES_DIR}/ach.xcarchive
RES_IPA_DIR=${RES_DIR}/ipa
RES_IPA_PATH=${RES_IPA_DIR}/${TARGET_NAME}.ipa# clean
xcodebuild OTHER_CFLAGS="-fembed-bitcode" clean -workspace $WORKSPACE_PATH -scheme $TARGET_NAME# archive
xcodebuild OTHER_CFLAGS="-fembed-bitcode" archive -archivePath $RES_ARCHIVE_PATH -workspace $WORKSPACE_PATH -scheme $TARGET_NAME -configuration $BUILD_CONFIG CODE_SIGN_IDENTITY="${CODE_SIGN_IDENTITY}" PROVISIONING_PROFILE=${PROVISIONING_PROFILE} PRODUCT_BUNDLE_IDENTIFIER=${PRODUCT_BUNDLE_IDENTIFIER} ENABLE_BITCODE=${ENABLE_BITCODE}# export
xcodebuild OTHER_CFLAGS="-fembed-bitcode" -exportArchive -archivePath $RES_ARCHIVE_PATH -exportPath $RES_IPA_DIR -exportOptionsPlist $EXPORT_OPTIONS_PLISTecho "打包成功:${RES_IPA_PATH}"

相关说明

project 和 workspace 都是可以手动和自动的,手动的话需要配置证书和配置文件
pod 之后的就对应使用 workspace,不使用 project

附录1:上传蒲公英

蒲公英文档

很简单,注意 path 即可

path=$RES_IPA_PATH
API_KEY=742cd3ecae1032adc45a6ce59d759c7f
MSG="QA 测试包-正式环境"a=$(curl -F "file=@$path" -F "_api_key=$API_KEY" -F "buildUpdateDescription=${MSG}" https://www.pgyer.com/apiv2/app/upload)

附录2:jenkins 补充

#构建后操作:补充个二维码下载安装链接
# set build description
#"appQRCodeURL":"(.*)"
#<img src='\1' width=144 height=144> <a href='\1'>二维码</a>

附录3:sh 运行权限

添加本地 sh 文件运行权限
chmod u+x ~/Desktop/test.sh

iOS 自动化构建 xcodebuild相关推荐

  1. 使用Jenkins配置iOS自动化构建工具

    关于iOS自动化构建其实并不复杂,通过一些简单的Git与Xcode指令,加上UI,我们自己也可以动手编写一款自动化构建工具.这在之前的博客中也有涉及,有兴趣的朋友可以在如下地址找到这篇博客: 自己动手 ...

  2. Python脚本实现iOS自动化构建版本

    Python脚本实现iOS打包并上传蒲公英.钉钉群通知 该方法可以快速实现iOS版本构建,发布测试: 注意:构建的版本有可能不完整,一些本地资源文件会丢失:发布App Store的版本不要使用该方法! ...

  3. iOS自动构建以及打包命令(xcodebuild,xcrun)

    两个命令的语法以及使用方法,资料比较多,到处都可以找到,比如: iOS 自动构建命令--xcodebuild 基于xcodebuild和xcrun的自动化打包 iphone-命令行编译之--xcode ...

  4. 用Jenkins自动化构建Android和iOS应用

    背景 随着业务需求的演进,工程的复杂度会逐渐增加,自动化的践行日益强烈.事实上,工程的自动化一直是我们努力的目标,能有效提高我们的生产效率,最大化减少人为出错的概率,实现一些复杂的业务需求应变. 场景 ...

  5. iOS 自动化发布 Fastlane 本地构建 IPA 并分发

    此篇文章相关代码已经上传至 GitHub,相关代码请移步 build_ios_app iOS 自动化发布测试包到 fir.im,以及自动打包上传 AppStore 并提交审核... 公司项目都是在 J ...

  6. python ios自动化_iOS python 自动化构建打包脚本

    1.准备工作和注意事项 2.配置填写 项目.python脚本文件及plist目录: plist文件: 3.生成相关目录 4.xcodebuild命令打包 5.上传svn 建议: 1.上传app sto ...

  7. iOS CI自动化构建:FastLane+企业重签+上传fir+jenkins

    最近成功搭建了fastlane自动化构建流程,做下记录. fastlane 是用 Ruby 语言编写的一个命令行工具. fastlane 提供了一百多个 Action,它们是 iOS 项目开发中所有自 ...

  8. xcode 选择configuraftions 打包_分利宝IOS自动化打包

    前言 在iOS开发中,我们常用的打包上传方式就是用Xcode的archive方式打包.到了测试阶段,需要频繁的打包提交到测试平台,整个流程包括:编译-打包-上传,整个过程需要我们去坚守每一步操作,提交 ...

  9. 自己动手设计一款iOS自动构建发布工具

    2019独角兽企业重金招聘Python工程师标准>>> 自己动手设计一款iOS自动构建发布工具 一.引言 在iOS开发中,你可能经常会遇到这样的场景: 自己负责的功能模块开发完成后, ...

最新文章

  1. [Angular 2] @ngrx/devtools demo
  2. MongoDB 里面日期查询的问题
  3. python实现合并链表_python:16.合并两个排序的链表
  4. nedc和epa续航里程什么意思_NEDC、WLTP和EPA续航里程标准谁最真实?看比亚迪工程师怎么说...
  5. p2p linux 开源项目,权威开源项目(linux系统、sip、live555)
  6. 前端学习(1776):前端调试之indexDB原理和查看
  7. python子类分配
  8. 属于程序员的等级,看看你是哪个级别?
  9. Android ProgressBar手动控制开始和停止
  10. SpringBoot之mybatis-plus
  11. Selenium(二)——webdriver 开始
  12. 如何通过安全的网络防御XcodeGhost?
  13. 轻松解决ArcGIS Pro 安装中文汉化包或离线帮助文档时报错“指定路径为空”
  14. html 多选框获取值数组,前端获取checkbox复选框的值 通过数组形式传递
  15. 普元:解读歼-20背后的国家安全重要领域信息化跨越
  16. css3边框背景border-image
  17. 互联网“诸神”的排位赛,2016年会是转折点?
  18. Python自动打码,DdddOcr通用验证码自动识别库
  19. oracle查询备份大小,【EXPDP】使用EXPDP备份数据时预估大小——ESTIMATE参数
  20. String字符串中数字排序(Java)

热门文章

  1. java hook技术_API Hook基本原理和实现 - - JavaEye技术网站
  2. 小白说代码——炼金术师
  3. HFCTF2022 Web ezphp
  4. “互联网+”定义及相关概念解析
  5. Java事务 同类内部调用场景
  6. Windows 2000/XP 系统对U盘的处理过程入手,逆向彻底消除U盘使用痕迹
  7. python源代码被解释器转换后的格式为什么码_python源代码被解释器转换后的格式为什么...
  8. FlyAI资讯:人工智能的前世今生
  9. 深度学习之——反向传播
  10. Python3 - Docker部署Libre Office Online在线文件转换