使用脚本工具Xcodebuild打包项目和导出ipa 2016.12.18

一般我们可以使用Xcode来打包我们的项目,但是如果每天都需要花上20分钟来打包项目实在是很痛苦的事情,程序员是最不愿意做重复劳动的人我们都懂,所以来使用脚本帮助我们自动打包项目吧。Xcodebuild是苹果官方的项目工程编译和打包工具,使用脚本打包项目的三方工具有很多,xctool、fastlane等等,都是在Xcodebuild的基础之上封装出来的,本着一颗从底层学起的心,我选择了从Xcodebuild开始学习。

1.打开终端,cd 到项目所在的文件夹下

$ cd ~/yourProjectPath

2.clean自己的项目

$ xcodebuild -workspace ${APP_NAME}/${APP_NAME}.xcworkspace -scheme ${APP_NAME} -configuration Release clean

  • -workspace 参数指定了我们所在的工作空间,使用Cocoapods的话,都会生成工作空间,有工作空间时必须明确指定
  • -scheme 该参数指定了我们要build哪个scheme,也就是我们工程目录下的Target,该参数必须明确指定
  • -configuration 该参数指定了我们build的环境配置选项,我们可以指定config为Debug、release或者其他我们自定义的Config(例如我们公司的app有appstore版和企业版,所以我们自定义了appstore、enterprise两种config,如何配置和管理多种不同的config环境请看这篇:swift 环境变量配置 使用config文件管理buildsetting)
使用脚本工具Xcodebuild打包项目和导出ipa 2016.12.18_第1张图片
Paste_Image.png

3.build 项目

xcodebuild -workspace ${APP_NAME}/${APP_NAME}.xcworkspace -scheme ${APP_NAME} -configuration Release

哈哈你没看错,看起来只是少了clean,在不指定action的情况下,xcodebuild默认就是执行build

4.archive项目

xcodebuild -workspace ${APP_NAME}/${APP_NAME}.xcworkspace -scheme ${APP_NAME} -configuration Release -archivePath ./build/${IPANAME}.xcarchive archive

  • -archivePath 该参数指定了archive后生成的xcarchive文件的路径和名字

5.导出IPA文件

$ -xcodebuild -exportArchive -archivePath ./build/${APP_NAME}.xcarchive -exportPath ./build -exportOptionsPlist /export_wmstest.plist

  • -exportArchive 加上该参数,就表明我们要导出ipa
  • -archivePath 指定我们要用哪一个archive文件来导出ipa文件
  • -exportOptionPlist 指定包含了我们导出ipa时所需的配置选项的plist文件的路径

6.配置导出ipa所需的plist文件,plist中可用的选项如下:

  • compileBitcode : Bool
    非appstore应用使用,默认是YES,
    For non-App Store
  • embedOnDemandResourcesAssetPacksInBundle : Bool
    非appstore应用使用,默认是YES,作用看不懂
    For non-App Store
    exports, if the app uses On Demand Resources and this is YES, asset packs are
    embedded in the app bundle so that the app can be tested without a server to host asset packs. Defaults to YES unless onDemandResourcesAssetPacksBaseURL is specified.exports, should Xcode re-compile the app from bitcode? Defaults to YES.
  • iCloudContainerEnvironment
    non-App Store应用,默认Development,如果使用icloud需要打开
    For non-App Store exports, if the app is using CloudKit, this configures the "com.apple.developer.icloud-container-environment" entitlement. Available options: Development and Production. Defaults to Development.
  • manifest : Dictionary
    non-App Store应用,
    For non-App Store exports, users can download your app over the web by opening your distribution manifest file in a web browser. To generate a distribution manifest, the value of this key should be a dictionary with three sub-keys: appURL, displayImageURL, fullSizeImageURL. The additional sub-key assetPackManifestURL is required when using on demand resources.
  • method : String
    打包方式:app-store 和enterprise常用
    Describes how Xcode
    should export the archive. Available options: app-store, ad-hoc, package,
    enterprise, development, and developer-id. The list of options varies based on
    the type of archive. Defaults to development.
  • onDemandResourcesAssetPacksBaseURL : String
    non-App Store应用,用来下载资源,embedOnDemandResourcesAssetPacksInBundle isn't YES时会用到
    For non-App Store exports, if the app uses On Demand Resources and embedOnDemandResourcesAssetPacksInBundle isn't YES, this should be a base URL specifying where asset packs are going to be hosted. This configures the app to download asset packs from the specified URL.
  • teamID : String
    用来打包的temID
    The Developer Portal team to use for this export. Defaults to the team used to build the archive.
  • thinning : String
    non-App Store应用,默认 ,通用设备
    For non-App Store
    exports, should Xcode thin the package for one or more device variants?
    Available options: (Xcode produces a non-thinned universal app),
    (Xcode produces a universal app and all available
    thinned variants), or a model identifier for a specific device (e.g.
    "iPhone7,1"). Defaults to .
  • uploadBitcode : Bool
    默认 YES
    For App Store exports,
    should the package include bitcode? Defaults to YES.
  • uploadSymbols : Bool
    默认YES
    For App Store exports, should the package include symbols? Defaults to YES.
    下图是题主用来打包企业版项目使用的plist文件
使用脚本工具Xcodebuild打包项目和导出ipa 2016.12.18_第2张图片
Paste_Image.png

你可能感兴趣的:(使用脚本工具Xcodebuild打包项目和导出ipa 2016.12.18)