<iOS 工具>一些常用的工具性腳本和配置

  1. 下面的腳本用于自動(dòng)將工程打包為一個(gè)二進(jìn)制 Framework(用于私有 Framework 的二進(jìn)制打包):

    #!/bin/sh
    carthage build --no-skip-current
    path=$(dirname $0)
    path=${path/\./$(pwd)}
    path=${path##*/}
    echo $path
    carthage archive $path
    
  2. 一個(gè)簡(jiǎn)單的 Carthage 腳本, 用于自動(dòng)下載和編譯依賴(lài):

    #!/bin/sh
    carthage update --platform iOS --cache-builds --no-use-binaries
    
  3. 一個(gè)比較通用的 gitignore 文件:

    # Xcode
    #
    # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
    
    ## Build generated
    build/
    DerivedData/
    
    ## Various settings
    *.pbxuser
    !default.pbxuser
    *.mode1v3
    !default.mode1v3
    *.mode2v3
    !default.mode2v3
    *.perspectivev3
    !default.perspectivev3
    xcuserdata/
    
    ## Other
    *.moved-aside
    *.xcuserstate
    
    ## Obj-C/Swift specific
    *.hmap
    *.ipa
    
    # CocoaPods
    #
    # We recommend against adding the Pods directory to your .gitignore. However
    # you should judge for yourself, the pros and cons are mentioned at:
    # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
    #
    Pods/
    #Podfile.lock
    
    # Carthage
    #
    # Add this line if you want to avoid checking in source code from Carthage dependencies.
    Carthage/Checkouts
    Carthage/Build
    
    */Carthage/Checkouts
    */Carthage/Build
    # fastlane
    #
    # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 
    # screenshots whenever they are needed.
    # For more information about the recommended setup visit:
    # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md
    
    fastlane/report.xml
    fastlane/screenshots
    
    .DS_Store
    *.swp
    #.gitignore
    fastlane/README.md
    fastlane/test_output/report.html
    fastlane/test_output/report.junit
    
    *.framework.zip
    
  4. 一個(gè)適用于高度注重可維護(hù)性工程中 swiftlint 配置文件(借鑒若干資料, 并在兩個(gè)生產(chǎn)工程中實(shí)踐, 算法工程的話(huà)建議參考 Raywenderlich 網(wǎng)站的):

    disabled_rules: # rule identifiers to exclude from running
    #  - colon
    #  - comma
    #  - control_statement
    #   - for_where
    #   - force_unwrapping
    opt_in_rules: # some rules are only opt-in
      - empty_count
      - missing_docs
      - closure_end_indentation
      - closure_spacing
        #  - force_unwrapping
        #- implicitly_unwrapped_optional
      - operator_usage_whitespace
      - redundant_nil_coalescing
    
    included: # 包含目錄`--path` is ignored if present.
      - ./
    
    excluded: # 排除目錄, 這個(gè)是在包含目錄之前進(jìn)行排除的
      - Carthage
      - Pods
      - Demo
    
    force_cast: warning # implicitly
    force_try:
      severity: warning # explicitly
    
    # 行寬
    line_length: 120
    
    # 類(lèi)型體的長(zhǎng)度
    type_body_length: 
      - 300 # warning
      - 400 # error
    
    # 方法或函數(shù)體的長(zhǎng)度
    function_body_length: 15
    
    # 方法或函數(shù)的參數(shù)個(gè)數(shù)限制
    function_parameter_count: 4
    
    # 文件的長(zhǎng)度限制
    file_length:
      warning: 500
      error: 600
    
    # 代碼單元結(jié)點(diǎn)分支個(gè)數(shù)
    cyclomatic_complexity:
      warning: 5
      error: 10
    
    # 類(lèi)型名稱(chēng)的長(zhǎng)度規(guī)定
    type_name:
      min_length: 2 # only warning
      max_length: # warning and error
        warning: 40
        error: 50
      excluded: iPhone # excluded via string
    
    # 標(biāo)識(shí)符長(zhǎng)度規(guī)定 
    identifier_name:
      min_length: # only min_length
        error: 2 # only error
      excluded: # excluded via string array
        - T
    
    reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit, html, emoji)
    
  5. 在 Xcode 工程中配置 Carthage:

    1. 新建一個(gè) Run Script, 添加內(nèi)容:

      /usr/local/bin/carthage copy-frameworks
      

      另外如果想要在比如 debug 模式下才復(fù)制的話(huà)(比如使用 FLEX 的時(shí)候), 可以這樣:

      if [ "$CONFIGURATION" == "Debug" ]; then
        /usr/local/bin/carthage copy-frameworks
      fi
      
    2. 在其中的 input file 里面添加諸如下面的內(nèi)容:

      $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
      
    3. 同時(shí)對(duì)應(yīng)在 output file 中添加如下類(lèi)似如下內(nèi)容:

      $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Alamofire.framework
      
  6. 配置 Swiftlint 的簡(jiǎn)單流程:

    1. 首先將需要的 .swiftlint.yml配置文件寫(xiě)好, 放到想要進(jìn)行語(yǔ)法檢查的目錄或根目錄.

    2. 新建一個(gè) Run Script, 添加內(nèi)容:

      swiftlint
      swiftlint autocorrect
      
    3. 如果要打開(kāi)或關(guān)閉某個(gè)語(yǔ)法檢查功能:

      // swiftlint:disable function_body_length
      // swiftlint:enable function_body_length
      
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,155評(píng)論 3 425
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,635評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,539評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,255評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,646評(píng)論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,838評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,399評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,146評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,338評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,565評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,983評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,257評(píng)論 1 292
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,059評(píng)論 3 397
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,296評(píng)論 2 376