美文网首页
自动化持续集成实践

自动化持续集成实践

作者: Colin_狂奔的蚂蚁 | 来源:发表于2018-07-14 21:23 被阅读71次

    自动化持续集成实践

    打包命令

    #clean 缓存目录
    rm -rf /Users/用户/Library/Developer/Xcode/DerivedData/*
    rm -rf ./build/*
    
    #clean 工程
    xcodebuild -quiet clean -workspace HybridStandard.xcworkspace -scheme HybridStandard-$envIOS -sdk iphoneos -configuration Release
    
    #生成xcarchive文件
    xcodebuild archive -quiet -workspace HybridStandard.xcworkspace -scheme HybridStandard-$envIOS -archivePath ./build/HybridStandard.xcarchive -sdk iphoneos -configuration Release
    
    #签名后生成ipa包
    xcodebuild -quiet -exportArchive -allowProvisioningUpdates -archivePath ./build/HybridStandard.xcarchive -exportPath ./build/HybridStandard -exportOptionsPlist HybridStandard/HybridStandard-$envIOS-Info.plist
    

    参考:https://blog.csdn.net/qq_32152027/article/details/60769001

    exportOptions.plist文件中的可选配置参数如下:

    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.
    

    问题汇总

    1、xcodebuild编译找不到头文件问题

    /Users/jenkins/workspaces/ios/ios.micro-finance/Pods/BlocksKit/BlocksKit/MessageUI/MFMailComposeViewController+BlocksKit.m:6:9: fatal error: 'A2DynamicDelegate.h' file not found
    #import "A2DynamicDelegate.h"
            ^~~~~~~~~~~~~~~~~~~~~
    1 error generated.
    In file included from /Users/jenkins/workspaces/ios/ios.micro-finance/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.m:26:
    /Users/jenkins/workspaces/ios/ios.micro-finance/Pods/AFNetworking/UIKit+AFNetworking/AFImageDownloader.h:28:9: fatal error: 'AFHTTPSessionManager.h' file not found
    #import "AFHTTPSessionManager.h"
            ^~~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.
    In file included from /Users/jenkins/workspaces/ios/ios.micro-finance/Pods/Cordova/CordovaLib/Classes/Private/Plugins/CDVGestureHandler/CDVGestureHandler.m:20:
    /Users/jenkins/workspaces/ios/ios.micro-finance/Pods/Cordova/CordovaLib/Classes/Private/Plugins/CDVGestureHandler/CDVGestureHandler.h:20:9: fatal error: 'CDVPlugin.h' file not found
    #import "CDVPlugin.h"
            ^~~~~~~~~~~~~
    1 error generated.
    In file included from /Users/jenkins/workspaces/ios/ios.micro-finance/Pods/IQKeyboardManager/IQKeyBoardManager/IQKeyboardReturnKeyHandler.m:24:
    /Users/jenkins/workspaces/ios/ios.micro-finance/Pods/IQKeyboardManager/IQKeyBoardManager/IQKeyboardReturnKeyHandler.h:24:9: fatal error: 'IQKeyboardManagerConstants.h' file not found
    #import "IQKeyboardManagerConstants.h"
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.
    ** BUILD FAILED **
    

    解决方法:

    1、点击项目→Build Settings→Search Paths→Header Search Paths(如果Search Paths下面没有Header Search  Paths,请注意选择类型为All)
    2、在Header Search Paths下的Debug和Release中加入"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include" 
    

    2、查看打包后的签名信息命令

    $codesign -vv -d build/HybridStandard/PayLoad/HybridStandard-Dev.app
    

    相关文章

      网友评论

          本文标题:自动化持续集成实践

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