赞
踩
再终端中输入man xcodebuild 查看其 man page介绍
NAME
xcodebuild – build Xcode projects and workspaces
SYNOPSIS
xcodebuild [-project name.xcodeproj] [[-target targetname] … | -alltargets] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [action …] [buildsetting=value …] [-userdefault=value …]
xcodebuild [-project name.xcodeproj] -scheme schemename [[-destination destinationspecifier] …] [-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [action …] [buildsetting=value …] [-userdefault=value …]
xcodebuild -workspace name.xcworkspace -scheme schemename [[-destination destinationspecifier] …] [-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [action …] [buildsetting=value …] [-userdefault=value …]
xcodebuild -version [-sdk [sdkfullpath | sdkname]] [infoitem]
xcodebuild -showsdks
xcodebuild -showBuildSettings [-project name.xcodeproj | [-workspace name.xcworkspace -scheme schemename]]
xcodebuild -list [-project name.xcodeproj | -workspace name.xcworkspace]
xcodebuild -exportArchive -archivePath xcarchivepath -exportPath destinationpath -exportOptionsPlist path
xcodebuild -exportLocalizations -project name.xcodeproj -localizationPath path [[-exportLanguage language] …]
xcodebuild -importLocalizations -project name.xcodeproj -localizationPath path
几个常用的命令有:
xcodebuild -showsdks
: 列出 Xcode 所有可用的 SDKs
xcodebuild -showBuildSettings
: 6的使用方式,查看当前工程 build setting 的配置参数,Xcode 详细的 build setting 参数参考官方文档 Xcode Build Setting Reference, 已有的配置参数可以在终端中以 buildsetting=value 的形式进行覆盖重新设置
xcodebuild -list
: 7的使用方式,查看 project 中的 targets 和 configurations,或者 workspace 中 schemes, 输出如下:
Information about project "EPayment":
Targets:
Epayment
Build Configurations:
Debug
Release
If no build configuration is specified and -scheme is not passed then "Release" is used.
Schemes:
Epayment
xcodebuild [-project name.xcodeproj] [[-target targetname] ... | -alltargets] build
: 1的使用方式,会 build 指定 project,其中 -target 和 -configuration 参数可以使用 xcodebuild -list 获得,-sdk 参数可由 xcodebuild -showsdks 获得,[buildsetting=value …] 用来覆盖工程中已有的配置。
xcodebuild -workspace name.xcworkspace -scheme scheme name build
: 3的使用方式,build 指定 workspace,当我们使用 CocoaPods 来管理第三方库时,会生成 xcworkspace 文件,这样就会用到这种打包方式
参数就很容易理解了:
-project -workspace:这两个对应的就是项目的名字也就是说哪一个工程要打包。如果有多个工程,这里又没有指定,则默认为第一个工程。
-target:打包对应的targets,如果没有指定这默认第一个。
buildsetting=value ...:使用此命令去修改工程的配置。但是在实际应用中,我选择了读取文件去修改一个配置,而没有应用此种方法。
-scheme:指定打包的scheme。
命令行进入我现在的一个项目目录,查看一下项目信息,xcodebuild -list
然后进行了一下命令
xcodebuild -workspace EPayment.xcworkspace -scheme Epayment -configuration Release
如果 build 成功,会看到 ** BUILD SUCCEEDED **
字样,但是我的build目录没有出现在项目目录下,可能没有进行某些配置,我的目录是:/Users/egintramacbook01/Library/Developer/Xcode/DerivedData/EPayment-bawbxskzmobkcybizafgxpnrdcbe/Build/Products/Release-iphoneos/违章缴费易.app
在 Release-iphoneos 文件夹下,有我们需要的.app文件,但是要安装到真机上,我们需要将该文件导出为ipa
文件,这里使用xcrun
命令:
xcrun -sdk iphoneos -v PackageApplication /Users/egintramacbook01/Library/Developer/Xcode/DerivedData/EPayment-bawbxskzmobkcybizafgxpnrdcbe/Build/Products/Release-iphoneos/违章缴费易.app -o ~/Desktop/违章缴费易.ipa
此时你回到桌面可以看到 违章缴费易.ipa文件,则为成功。此ipa文件为内测版,企业版可能需要配置上描述文件,还未实验。
比较出名的就是facebook出的 xctool
一个python脚本autobuild.py
工作中,特别是所做项目进入测试阶段,肯定会经常打 Ad-hoc 包给测试人员进行测试,但是我们肯定不想每次进行打包的时候都要进行一些工程的设置修改,以及一系列的 next 按钮点击操作,现在就让这些操作都交给脚本化吧!
脚本化中使用如下的命令打包:
xcodebuild -project name.xcodeproj -target targetname -configuration Release -sdk iphoneos build CODE_SIGN_IDENTITY="$(CODE_SIGN_IDENTITY)" PROVISIONING_PROFILE="$(PROVISIONING_PROFILE)"
或者
xcodebuild -workspace name.xcworkspace -scheme schemename -configuration Release -sdk iphoneos build CODE_SIGN_IDENTITY="$(CODE_SIGN_IDENTITY)" PROVISIONING_PROFILE="$(PROVISIONING_PROFILE)"
然后使用 xcrun 生成 ipa 文件:
xcrun -sdk iphoneos -v PackageApplication ./build/Release-iphoneos/$(target|scheme).app"
清除 build 过程中产生的中间文件
脚本的使用:
在脚本顶部,有几个全局变量,根据自己的项目情况修改。
CODE_SIGN_IDENTITY = "iPhone Distribution: companyname (9xxxxxxx9A)"
PROVISIONING_PROFILE = "xxxxx-xxxx-xxx-xxxx-xxxxxxxxx"
CONFIGURATION = "Release"
SDK = "iphoneos"
USER_KEY = "15d6xxxxxxxxxxxxxxxxxx"
API_KEY = "efxxxxxxxxxxxxxxxxxxxx"
其中,CODE_SIGN_IDENTITY
为开发者证书标识,可以在 钥匙串访问 ->证书 -> 选中证书右键弹出菜单 -> 显示简介 -> 常用名称 获取,类似 iPhone Distribution: Company name Co. Ltd (xxxxxxxx9A)
, 包括括号内的内容。
PROVISIONING_PROFILE
: 这个是 mobileprovision 文件的 identifier,获取方式:
Xcode -> Preferences -> 选中申请开发者证书的 Apple ID -> 选中开发者证书 -> View Details… -> 根据 Provisioning Profiles 的名字选中打包所需的 mobileprovision 文件 -> 右键菜单 -> Show in Finder -> 找到该文件后,除了该文件后缀名的字符串就是 PROVISIONING_PROFILE
字段的内容。
USER_KEY
, API_KEY
: 是蒲公英开放 API 的密钥。
注意
help="specify output filePath+filename"
使用过程中出现了错误 :
File “autobuild.py”, line 6, in
import requests
ImportError: No module named requests
这里requests是Python中给人用的http工具包。我通过sudo easy_install pip
安装了pip,然后sudo pip install requests
安装成功 ;运行过程中又出现了编码错误ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)
,通过添加一下三行代码解决的:
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8’)
在一系列被虐后,运行命令:python autobuild.py -w EPayment.xcworkspace -s Epayment -o ~/Desktop/123.ipa
Upload Success…
进入蒲公英看到了自己刚才上传的应用,以后每个应用放一个修改后唯一的autobuild.py
文件,测试,发布,就用它啦。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。