美文网首页iOS-swiftiOS学习笔记iOS Developer
使用脚本工具Xcodebuild打包项目和导出ipa 2016.

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

作者: 青天揽明月 | 来源:发表于2016-12-18 21:13 被阅读0次

    一般我们可以使用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
    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应用,默认 <none> ,通用设备
      For non-App Store
      exports, should Xcode thin the package for one or more device variants?
      Available options: <none> (Xcode produces a non-thinned universal app),
      <thin-for-all-variants> (Xcode produces a universal app and all available
      thinned variants), or a model identifier for a specific device (e.g.
      "iPhone7,1"). Defaults to <none>.
    • 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文件
    Paste_Image.png

    相关文章

      网友评论

        本文标题:使用脚本工具Xcodebuild打包项目和导出ipa 2016.

        本文链接:https://www.haomeiwen.com/subject/iqrzmttx.html