iOS 自动构建命令——xcodebuild

想想当初天天来到公司,每天需要做一件事就是打开Xcode打包ipa,上传到fir。日复一日月复一月年复一年的做着同样的事情,作为有志成为优秀工程师的我来说,这是必须要解决的问题,所以决定自动化解决问题。

简介

xcodebuild 是苹果发布自动构建的工具。它在一个Xcode项目下能构建一个或者多个targets ,也能在一个workspace或者Xcode项目上构建scheme,总的来说,用它没错就是了。

用法说明

Tips:在终端输入man xcodebuild,可以看到Description里面有介绍用法。

也可以看官方文档

当你想构建一个Xcode项目,在项目目录下运行xcodebuild就可以了(目录下面包含着projectname.xcodeproj文件就行),如果目录下有多个项目,你需要用参数-project指定一个项目。默认xcodebuild命令会构建你第一个target的。当然你也可以用-targetname指定。

如果要构建workspace,你必须指定-workspace-scheme参数。

当然你可以以用就比如-version、-showsdks、-list等一些命令来获取一些项目相关的参数。

之前文章使用xcodebuild+ xcrun的PackageApplication打包,但是已经不推荐使用了。下面使用arhive和exportArchive来打包

Archive包

在shell里面 [ ]表示这个参数是可选的,< > 表示参数是必须的

话不多说,先上个命令:

    xcodebuild archive -workspace 项目名称.xcworkspace 
                       -scheme 项目名称 
                       -configuration 构建配置 
                       -archivePath archive包存储路径 
                       CODE_SIGN_IDENTITY=证书 
                       PROVISIONING_PROFILE=描述文件UUID  
  • -workspace 这个就是项目名
  • -scheme 可以通过xcodebuild -list获取
  • -configration 一些参数,也可以通过xcodebuild -list获取,一般使用Debug、Release
  • -archivePath archive后的路径
  • CODE_SIGN_IDENTITY 证书的Inentity
  • PROVISIONING_PROFILE 描述文件UUID

来看看xcodebuild -list吧,看看怎么获取scheme和configration

     Information about project "ThreeDTouchTest":
        Targets:
            ThreeDTouchTest
            ThreeDTouchTestTests
            ThreeDTouchTestUITests
    
        Build Configurations:
            Debug
            Release
    
        If no build configuration is specified and -scheme is not passed then "Release" is used.
    
        Schemes:
            ThreeDTouchTest

如果不需要特定去指定证书和Provisioning文件,那可以省略上面这两个参数也可以。不过还是得说一下这两参数怎么获取:

证书Identity获取:

打开你的钥匙串访问->选中其中一个证书->右键->显示简介,把标题复制出来就可以了。

格式是:

iPhone Distribution: Beijing xxoo yyooxx Technology Service CO., Ltd. (UA11AAJJKK8)

证书.png

获取Provisioning文件UUID

在xcode8.0以上,Provisioning文件的位置是:

/Users/用户名/Library/MobileDevice/Provisioning Profiles

在终端上面进入的文件夹。使用/usr/bin/security可以把Provisioning文件解密

/usr/bin/security cms -D -i 098a87e3-11fe-463d-75aa-12345678adba.mobileprovision

在终端输出整个plist文件,里面包含着所有的信息

对了,还有这个命令可以查看项目设置:

xcodebuild -target <target> -configuration <configuration> -showBuildSettings

生成ipa文件

PackageApplication已经不推荐使用了。下面说一下另外一种打包的方法:

xcodebuild -exportArchive -archivePath archive文件的地址.xcarchive 
                          -exportPath 导出的文件夹地址 
                          -exportOptionsPlist exprotOptionsPlist.plist 
                          CODE_SIGN_IDENTITY=证书 
                          PROVISIONING_PROFILE=描述文件UUID  

同样,如果你不需要的指定证书和Provisioning文件,可以把上面的两个参数去掉,它会根据你的Xcode配置去匹配。

exportOptionsPlist这个参数,它是一个plist文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>teamID</key>
        <string>UA11AAJJKK8</string> //TeamID
        <key>method</key>
        <string>ad-hoc</string> //ad-hoc打包
        <key> compileBitcode</key> //是否编译bitcode
        <false/>
    </dict>
    </plist>

下面是关于其他字段的解释:

Available keys for -exportOptionsPlist:

    compileBitcode : Bool

        For non-App Store exports, should Xcode re-compile the app from bitcode? Defaults to YES.

    embedOnDemandResourcesAssetPacksInBundle : Bool

        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.

    iCloudContainerEnvironment

        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

        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

        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

        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

        The Developer Portal team to use for this export. Defaults to the team used to build the archive.

    thinning : String

        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

        For App Store exports, should the package include bitcode? Defaults to YES.

    uploadSymbols : Bool

        For App Store exports, should the package include symbols? Defaults to YES.

上传到Fir

这个就更简单了,敬请参照:Fir的命令行客户端

总结

作为开发人员,肯定不可能天天跟着测试人员跑。自动化是非常有必要的,所以会点脚本,肯定不会吃亏。


转载链接:https://www.jianshu.com/p/3f43370437d2

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS自动拍摄身份证是指在iOS系统下使用相机应用,通过自动识别算法和拍摄功能,实现对身份证的快速、准确的拍摄。当用户使用该功能时,系统会自动识别身份证的边框,并根据识别结果自动调整相机的位置和角度,以确保身份证能够被完整地拍摄下来。用户只需要将身份证放在拍摄区域内,系统会自动对焦、曝光,并捕捉最佳的照片。 这种自动拍摄身份证的功能对于需要频繁进行身份证拍摄的场景非常有用,比如银行、机场、酒店等需要核实用户身份的场所。它可以减少工作人员的操作时间,提高效率,同时也减少了由于操作不当导致的照片模糊、角度不正等问题。而且由于自动拍摄的过程是由系统完成的,所以它具有一定的自动化和智能化的特点,可以降低用户的学习和使用成本。 要实现iOS自动拍摄身份证的功能,需要系统提供相应的接口和算法支持,并且相机应用需要和这些接口进行集成。在拍摄过程中,系统会实时分析图像,判断身份证的位置和倾斜角度,然后通过调整相机参数来优化拍摄效果。此外,系统还可以进行图像的后处理,对拍摄的照片进行自动裁剪、矫正、清晰化等处理,使得最终的拍摄结果更为精准和美观。 总而言之,iOS自动拍摄身份证的功能可以提高用户使用相机的便捷性和效率,是一种在特定场景下非常实用的技术。随着技术的不断进步,我们可以期待这个功能在未来得到更多的改进和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值