• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Xcode命令行簡單了解一下

    標簽: IOS  Xcodebuild  單元測試  命令行打包  iOS開發

    ?? 最近在對開發流程進行工程化處理,優先處理的是單元測試的自動化。需要對Xcode的相關命令行進行一個全面的了解,轉載了一篇文章《Xcodebuild命令使用》
    Xcodebuild簡介
    Xcodebuild是命令行工具包的其中一項。
    命令行工具包(Command Line Tools)是一個輕量的、可以與XCode分開的、在Mac上單獨下載的命令行工具包。
    它有兩部分組成:Mac OS SDK和用戶系統庫目錄/usr/bin下的諸多命令工具。例如:gcc/g++編譯器,make、git、nase、xcodebuild、xcrun等等。

    命令行工具包(Command Line Tools)的安裝

    Xcode-select命令

    xcode-select是Mac系統自帶的命令行工具,屬于用戶系統內/usr/bin。當電腦上安裝多個Xcode時,xcode-select用來選擇命令行工具為哪一個版本的Xcode服務。
    命令行工具安裝指令:xcode-select --install
    選擇指定的Xcode路徑:xcode-select --switch

    常見命令

    man命令

    man可以進行命令用法的在線文檔查詢,包括使用例子。比如:man xcodebuild

    xcpretty命令

    命令行輸出美化小工具,可以對錯誤,警告給予高亮顯示。使用方式:xcodebuild | xcpretty

    xcrun命令

    xcrun用于調用其他命令執行,如:xcrun xcodebuild
    xcrun的調用是基于xcode-select選擇的工具鏈,當電腦中存在多個版本的xcode時,使用xcrun調用可以保證命令的環境一致性。

    xcodebuild命令

    下面重點介紹xcodebuild如何使用。
    在使用xcodebuild時,從終端進入到projectname .xcodeproj 目錄下。
    有workspace時,參數中要帶-workspace和-scheme。
    只有project時,則參數中要帶 -project和-scheme選項。
    xcodebuild在Xcode中存在的默認配置在路徑project/info頁面中
    在這里插入圖片描述

    xcodebuild的常見使用場景

    簡單命令行build

    xcodebuild
    單寫一個xcodebuild,工程編譯使用默認的scheme和編譯配置。
    scheme、targets、配置、目標設備、SDK和導出數據位置可以在后面自定義配置

    archive打包操作

    xcodebuild archive  -workspace PROJECT_NAME.xcworkspace   
    -scheme SCHEME_NAME -configuration release -archivePath  
    EXPORT_ARCHIVE_PATH 
    -archivePath:設置項目的歸檔路徑
    
    

    導出ipa文件

    xcodebuild -exportArchive -archivePath EXPORT_ARCHIVE_PATH    
    -exportPath EXPORT_IPA_PATH -exportOptionsPlist ExportOptionsPlistPath
    -allowProvisioningUpdates
    -exportArchive:導出ipa
    -exportPath:導出ipa文件的路徑
    -exportOptionsPlist:文件導出時的配置信息
    -allowProvisioningUpdates:允許xcodebuild與蘋果網站通訊,進行自動簽名,證書自動更新,生成。
    

    單元測試

    xcodebuild test -project PROJECT_NAME.xcodeproj -scheme SCHEME_NAME 
    -destination 'platform=iOS Simulator,name=iPhone 6s,OS=11.2' -
    configuration Debug -derivedDataPath output
    
    -derivedDataPath:產生的緩存文件放在./output目錄下
     configuration:編譯環境,選擇Debug/Release
     -destination :選擇test時的目標設備和系統版本號
    

    UI測試/單元測試,針對某個方法進行測試

    xcodebuild test -project PROJECT_NAME.xcodeproj -scheme SCHEME_NAME 
    -destination 'platform=iOS Simulator,name=iPhone 6s,OS=11.2' 
    -only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME -quiet
    
    -only-testing: 只測試某一個方法,target名/類名/方法名
    -quiet : 除了錯誤和警告不打印任何信息
    

    使用上次編譯成功的測試用例進行測試

    注意:app創建時需要指定app的bundle名
    self.app = [[XCUIApplication alloc] initWithBundleIdentifier:@“com.xxx.id”];
    [self.app launch];

    1.UI測試/單元測試,不進行代碼編譯,利用上次編譯的緩存(包括工程編譯+測試用例編譯),進行重新跑測試。
    xcodebuild test-without-building -workspace PROJECT_NAME.xcworkspace 
    -scheme doctor -destination 'platform=iOS Simulator,name=iPhone 6s,OS=12.0' 
    -only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME
    
    2.UI測試,使用選項-xctestrun生產測試文件,進行測試調試
    //1.產生xctestrun文件
    xcodebuild build-for-testing -project PROJECT_NAME.xcodeproj -scheme SCHEME_NAME 
    -destination 'platform=iOS Simulator,name=iPhone 6s,OS=11.2' -
    configuration Debug -derivedDataPath output
    
    -derivedDataPath: derivedDataPath/Build/Products目錄下生成一個.xctestrun文件,包含測試信息
    
    //2.使用xctestrun文件(不帶-workspace/-project/-scheme參數)
    xcodebuild test-without-building -destination 'platform=iOS Simulator,name=iPhone 6s,OS=12.0' 
    -xctestrun DerivedDataPath.xctestrun -only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME
    
    -xctestrun:有這個選項就從指定的路徑下尋找bundle,沒有這個選項在derivedDataPath下尋找bundle
    -only-testing:TARGET_NAME/CLASS_NAME/FUNC_NAME
    

    xcodebuild常見action

    在這里插入圖片描述

    另外一些常見的命令

    genstrings 命令

    本地化命令,根據指定的C/Object-C源文件生成.strings文件。

    genstrings -a /path/to/source/files/*.m
    

    ibtool 命令

    本地化命令,作用于xib文件。

    ibtool --generate-strings-file Localizable.strings en.lpoj/Interface.xib
    

    文章參考:
    https://www.hualong.me/2018/03/14/Xcodebuild/
    https://www.jianshu.com/p/2a351587f0ef

    在這里插入圖片描述

    版權聲明:本文為HHL110120原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/HHL110120/article/details/107947627

    智能推薦

    Spark讀取HBase數據(命令行+sbt打包編譯)(按照林子雨老師教程會出錯,此處記錄一下坑)

    Spark讀取HBase數據(命令行+sbt打包編譯)(按照林子雨老師教程會出錯,此處記錄一下坑) 先看看林子雨老師的教程教程 坑: 坑 1. 此處教程有錯誤;如果不按照下面的步驟做,后面執行下圖命令時會報錯:NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/...

    簡單了解一下裝飾器設計模式

    裝飾器設計模式 裝飾(Decorator)模式的主要優點有: 采用裝飾模式擴展對象的功能比采用繼承方式更加靈活。 可以設計出多個不同的具體裝飾類,創造出多個不同行為的組合。 組成: 抽象組件:需要裝飾的抽象接口(接口或抽象父類) 具體組件:需要裝飾的對象 抽象裝飾類:包含了對抽象組件的引用以及裝飾著共有的方法 具體裝飾類:被裝飾的對象 關于裝飾器設計模式初學者不需要深入了解 程序運行結果如下:...

    簡單了解一下DHCP和DHCP中繼

    文章目錄 DHCP和DHCP中繼 1.1DHCP的基本原理 1.2DHCP中繼 實驗拓撲圖 2.1拓撲圖 2.2實驗目的 2.3實驗思路 (結合圖片看,容易理解) 前言: 了解DHCP的工作原理,四次報文;DHCP中繼的實驗原理和實驗思路; DHCP和DHCP中繼 1.1DHCP的基本原理 第一步:客戶端通過廣播發送DHCP Discover 報文尋找服務器端 第二步:服務器端通過單播發送DHCP...

    簡簡單單了解一下HashMap

    淺談HashMap (本文基于jdk1.8) HashMap概述 昨天寫的第一篇居然有人追更了,那今天再給大家整個活兒。大家都知道HashMap是Map接口的實現,HashMap 允許空的 key-value 鍵值對,HashMap 被認為是 Hashtable 的增強版,HashMap 是一個非線程安全的容器,如果想構造線程安全的 Map 考慮使用 ConcurrentHashMap。HashM...

    hive 導出數據之一列多行,轉為一行多列

    需求:提取數據 說明:原數據是一列多行,需要轉化為一行多列 待查詢表為:temp_05 待查詢數據為: 待查詢數據如圖: 需要提取的數據表頭如下: 預定日期 昨日價格 前天價格 2018-02-01 2018-02-02 2018-02-03 2018-02-04 可用提數 SQL 數據如圖: 以下為嘗試過程 數據如圖: 數據如圖: 數據如圖: 數據如圖:...

    猜你喜歡

    asp.net做一個簡易的聊天室

    要求: 結果: 關鍵代碼: Default.aspx Default.aspx.cs Default2.aspx Default2.aspx.cs Default3.aspx Default3.aspx.cs Default4.aspx...

    動態SQL和多表關聯-筆記

    《動態SQL與多表關聯》筆記 學習目標 能夠使用動態SQL完成SQL拼接 能夠使用resultMap完成多表查詢 能夠使用一對一查詢 能夠使用一對多查詢 (注:多對多其實就是兩個一個多) 映射文件:為什么要resultMap 目標 定義結果映射 使用結果映射 回顧 在mybatis中有2種配置文件: 核心配置文件,如:sqlMapConfig.xml 實體類映射文件,如:UserMapper.xm...

    【OpenGL C++ UE4】獲取模型頂點及面索引數據,并優化存儲結構供UE4繪制

    目錄 一、功能需求 二、成果 三、環境配置 四、詳細步驟 4.1 Max制作三棱錐并處理 4.2 核心代碼 4.2.1 傳入結構體數據 4.2.2 頂點去重、更新索引 4.2.3 輸出本地CSV文件 4.3 UE4繪制 一、功能需求 想必你肯定會問我一個問題,UE4直接導入模型不好么? 哈哈,前提是在做畢設時,導師提供的只有頂點與面索引數據,沒有模型。 下文詳細介紹了畢設開發中的難點,涉...

    解決Pyinstaller打包numpy和pandas庫文件過大問題

    解決Pyinstaller壓縮numpy和pandas庫文件過大問題 文件包類型和網上的方法 Windows下docker的安裝 在docker下實現打包     今天是2021年的第一天,先祝各位小伙伴現年快樂哈。最近因為做了一個項目,需要打包文件,文件中包含了numpy和pandas庫,結果打包出來幾百行的代碼居然要900m,人都傻了,翻遍了全網找解決方...

    精品国产乱码久久久久久蜜桃不卡