Home

Awesome


layout: "post" title: "readme" date: "2012-05-29"

IPABuildShell

IPABuildShell 一个轻量级 iOS 快速自动打包工具,在你电脑已经导入证书签名的前提下,最简单的只需要一键./IPABuildShell.sh 就能生成IPA。当然,如果你需要更多的功能,详见帮助-h | --help


fenglihaideMacBook-Pro: fenglihai$ /Users/itx/IPABuildShell/IPABuildShell.sh -h

Usage:IPABuildShell.sh -[abcdptx] [--enable-bitcode YES/NO] [--auto-buildversion YES/NO] ...
可选项:
-a | --archs <armv7|arm64|armv7 arm64> 指定构建架构集,例如:-a 'armv7'或者 -a 'arm64' 或者 -a 'armv7 arm64' 等,默认"armv7 arm64"
-b | --bundle-id bundleId 设置Bundle Id
-c | --channel <development|app-store|enterprise|ad-hoc> 指定分发渠道,development 内部分发,app-store商店分发,enterprise企业分发, ad-hoc 企业内部分发
-d | --provision-dir dir 指定授权文件目录,默认会在~/Library/MobileDevice/Provisioning Profiles 中寻找
-p | --keychain-password passoword 指定访问证书时解锁钥匙串的密码,即开机密码
-t | --target targetName 指定构建的target。默认当项目是单工程(非workspace)或者除Pods.xcodeproj之外只有一个工程的情况下,自动构建工程的第一个Target
-v | --verbose 输出详细的构建信息
-h | --help 帮助.
-x 脚本执行调试模式.
--show-profile-detail provisionfile 查看授权文件的信息详情(development、enterprise、app-store、ad-hoc)
--debug Debug和Release构建模式,默认Release模式,
--enable-bitcode 开启BitCode, 默认不开启
--auto-buildversion 自动修改构建版本号(设置为当前项目的git版本数量),默认不开启
--env-filename filename 指定开发和生产环境的配置文件
--env-varname varname 指定开发和生产环境的配置变量
--env-production <YES/NO> YES 生产环境, NO 开发环境(只有指定filename和varname都存在时生效)

功能

注1:

IPA分发途径,支持常用的4种:

- 内部测试(development):用于给我们内部人员测试使用的,指定的授权用户设备才可以通过使用“同步助手”、“APP助手”等工具安装
- 商店分发(app-store):用于提交到商店审核,用户设备只能通过在App Store下载安装
- 企业分发(enterprise):用于部署到服务器,所有用户设备都可通过扫描二维码或使用浏览器点击链接下载安装
- 企业内部分发(ad-hoc):用于部署到服务器,授权用户设备才可以通过扫描二维码或使用浏览器点击链接下载安装

安装

  1. IPABuildShell.sh 下载到本地,并赋予可执行权限

    chmod +x /路径/IPABuildShell.sh

  2. 安装xcpretty(可选)

    sudo gem install xcpretty

用来格式化xcodebuild输出日志,建议安装

使用

打开终端,cd到工程目录,执行下面命令开始构建你的ipa, 直接构建

/脚本目录/IPABuildShell.sh

或者指定构建的Target

/脚本目录/IPABuildShell.sh -target "Test_Main"

xcconfig 文件说明

--xconfig 参数的用法和xcodebuild --xcconfig ~/build.xcconfig 的使用是一致的。而xcconfig 文件中的键值对,可以在Xcode-target-Build Settings 中对其中你感兴趣的一项配置进行拷贝,即可获得该配置的键值对。例如:

ENABLE_BITCODE = NO
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
CODE_SIGN_STYLE = Manual
PROVISIONING_PROFILE_SPECIFIER = dev_cn.com.bluemoon.sfa-20200423
PROVISIONING_PROFILE = 72571deb-21a1-4976-bb3f-51674cec44d7
DEVELOPMENT_TEAM = NK94TM64KF
CODE_SIGN_IDENTITY = iPhone Developer: Li Chao (BTTHBUB23E)
PRODUCT_BUNDLE_IDENTIFIER = cn.com.bluemoon.sfa
SUPPORTS_MACCATALYST = NO




openssl

如果你的openssl是 LibreSSL ,那么请安装新版本的openssl

Mac OSX 安装新版OpenSSL问题

bluemoon007deiMac:SVGManager itx$ openssl version
LibreSSL 2.2.7

更新之后

bluemoon007deiMac:~ itx$ openssl version
OpenSSL 1.0.2o  27 Mar 2018

如果更新之后还是没有显示正确的openssl,是因为系统存在两个openssl,通过which openssl命令可以查看,当前终端执行的openssl是哪个路径下的。可通过设置系统环境变量PATH来优先执行执行哪个路径下的openssl

echo 'export PATH="/usr/local/Cellar/openssl/1.0.2o_1/bin/:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

注意:/usr/local/Cellar/openssl/1.0.2o_1/bin/ 该路径请按照你实际情况来更改,通常是1.0.2o_1这个文件夹不同!

最后

如果本工具对你有帮助,麻烦Star一个!谢谢!

欢迎大家给项目提出任何意见和建议,我会尽我所能为大家解决!

特建iOS 打包签名技术交流QQ论群:629088155

# ----------------------------------------------------------------------
# author:       冯立海
# email:        335418265@qq.com
# ----------------------------------------------------------------------

版本更新日志

# 2020/05/29
# 版本:3.0.6
# 1. 增加dsym文件备份
#--------------------------------------------
# 2020/05/22
# 版本:3.0.5
# 1. 支持通配符bundleid描述文件匹配
#--------------------------------------------
# 2018/07/20
# 版本:3.0.4
# 1. 修复找不到plist文件的兼容问题
# 2. 更改默认构建架构集为“armv7 arm64” 
#--------------------------------------------
# 2018/07/20
# 版本:3.0.3
# 1. 增加-t参数指定构建的Target
# 2. 优化一些日志输出
# 3. 使用--debug 参数代替-t | --config-type参数 来指定Debug或Release模式,详见 IPABuildShell -h
#--------------------------------------------

# 2018/07/17
# 版本:3.0.2
# 1. 增加支持ad-hoc打包格式
# 2. 增加-v参数输出详细的构建信息
# 3. 增加--show-profile-detail provisionfile 参数查看授权文件内容
# 4. 修复无法匹配证书签名ID带有多个连续空格的bug
#--------------------------------------------

# 2018/06/07
# 版本:3.0.1
# 1. 修复备份PackageLog文件夹的一些bug
# 2. 使用xcodeproj工具代替PlistBuddy来修改project.pbxproj文件,防止项目中文乱码和project.pbxproj文件格式发生变化
# 3. 增加岁OpenSSL的检查校验
#--------------------------------------------

# 2018/05/24
# 版本:3.0.0
# 1. 自动匹配授权文件和签名(移除config.plist配置)
# 2. 优化授权文件匹配算法,取有效期最长授权文件
# 3. 调整脚本参数,详见-h
# 4. 优化代码
# 5. 兼容长参数
# 6. 增加全局配置文件user.xcconfig
#--------------------------------------------
# 2018/05/16
# 版本:3.0.0
# 1. 自动匹配授权文件和签名(移除config.plist配置)
# 2. 优化授权文件匹配算法,取有效期最长授权文件
# 3. 调整脚本参数,详见-h
# 4. 优化代码
# 5. 兼容长参数
# 6. 增加全局配置文件user.xcconfig
#--------------------------------------------
# 2018/05/04
# 版本:2.1.0
# 1. 移除使用xcodepro(xceditor.rb),使用xcodebuild 的`-xcconfig `参数来实现签名等配置修改
# 2. 保持工程配置(project.pbxproj)文件不被修改
#--------------------------------------------
# 2018/04/19
# 版本:2.0.6
# 1. 优化build函数代码。
# 2. 增加xcpretty 来格式化日志输出
# 3. 支持xcode9(8.0~9.3)
#
#--------------------------------------------
# 2018/04/12
# 版本:2.0.5
# 优化:
# 1. 增加一个“修改Bundle Id”功能。如-b com.xxx.xx。
# 2. 优化一些代码
#
#--------------------------------------------
# 2018/03/22
# 版本:2.0.4
# 优化:默认构建ipa支持armch 为 arm64。(因iOS 11强制禁用32位)
#
#--------------------------------------------
# 版本:2.0.3
# 2018/03/12
#
# 优化:对授权文件mobiprovision有效期检测,授权文件有效期小于90天,强制打包失败!
#
#--------------------------------------------
# 2017/08/05
#
# 版本:2.0.2
# 优化:兼容xcode8.3以上版本
# xcode 8.3之后使用-exportFormat导出IPA会报错 xcodebuild: error: invalid option '-exportFormat',改成使用-exportOptionsPlist
# Available options: app-store, ad-hoc, package, enterprise, development, and developer-id.
# 当前用到:app-store ,ad-hoc, enterprise, development
#
#--------------------------------------------
# 2016/04/01
#
# 版本:2.0.1
# 优化:
#		为了节省打包时间,在打开发环境的包时,只打armv7
#		profileType==development 时,设置archs=armv7 (向下兼容) ,否则archs为默认值:arm64 和armv7。
#
#--------------------------------------------
# 2016/03/08
#
# 版本:2.0.0
# 优化:
#		1.去掉可配置签名、授权文件,并修改为自动匹配签名和授权文件!
#
#--------------------------------------------
# 2016/03/06
#
# 版本:1.0.0
# 功能:
#		1.显示Build Settings 签名配置
#		2.获取git版本数量,并自动更改build号为版本数量号
#		3.日志文本log.txt输出
#		4.自动匹配签名和授权文件
#		5.支持workplace、多个scheme
#		6.校验构建后的ipa的bundle Id、签名、支持最低iOS版本、arm体系等等
#		7.构建前清理缓存,防止xib更改没有被重新编译
#		8.备份历史打包ipa以及log.txt
#		9.可更改OC代码,自动配置服务器测试环境or生产环境
#		10.格式化输出ipa包名称:name_time_开发环境_企业分发_1.0.0(168).ipa

# 备注:
#		1.security 命令会报警告,忽略即可:security: SecPolicySetValue: One or more parameters passed to a function were not valid.
#		2.支持Xcode8.0及以上版本(8.0前没有测试过)