Android iOS項目,修改版本號腳本及結合IDE的使用

 

Android iOS項目,修改版本號腳本及結合IDE的使用

來由:

每次Build都須要更改版本號的工做乏味無趣並且還容易忘記。android

當初寫android時,只是想到在編譯以前執行一些腳本而到達目的。可是每次本身還得執行腳本就放棄了。git

後來寫iOS時,無心中發現xcode是支持編譯前支持執行腳本的。果斷寫了一個(見下文)。web

恩。沒準Android studio也有。翻了翻IDE,找到入口(好開心)shell

正題:

作法:
  1. 生成一個版本號
  2. 在編譯以前,修改相關配置文件
Android:
  • 環境xcode

    • IDE: Android studio (eclipse我沒實踐,使用eclipse的朋友能夠google一下)bash

    • Script: shelleclipse

    • OS: Mac OS Xide

  • 步驟工具

    1. Run -> Edit-Configurationui

    2. Before launch -> 點擊 + (Before launch在最下面,記得拉下去)

    3. 選擇Run External Tools -> + -> +

    4. Edit Tool 界面

      • Options中的內容看你狀況選擇

      • program 解釋器路徑

      • Parameters 要執行的腳本和參數

      • Working directory 工做路徑

  • scrpit

    這部分最好根據實際狀況本身寫一個。下面是個人例子

    1. 經過git的提交次數做爲Build號,結合git tag的信息生成版本號

    2. 修改AndroidManifest.xml

    build號:項目提交次數經過

    git rev-list HEAD | wc -l

    主子版本號: 根據最後一個tag肯定,個人tag的格式 v2.0.1

    version_name=`git tag | tail -1 | sed 's/v//'`
      version_name=`echo ${version_name%.*}.$patch | tr -d ' '`

    所有腳本:

    #!/bin/bash
      project_home=$1
      echo "project home is $project_home"
      patch=`git rev-list HEAD | wc -l | tr -d '\t '`
      echo "current patch is $patch"
    
      version_name=`git tag | tail -1 | sed 's/v//'`
    
      version_code=$patch
      version_name=`echo ${version_name%.*}.$patch | tr -d ' '`
    
      echo "version name is $version_name"
      echo "version code is $version_code"
    
      cat $project_home/AndroidManifest.xml | \
              sed -e "s/android:versionCode=\".*\"/android:versionCode=\"${version_code}\"/" \
                      -e "s/android:versionName=\".*\"/android:versionName=\"${version_name}\"/" \
                          > $project_home/.AndroidManifest.xml
      mv $project_home/.AndroidManifest.xml $project_home/AndroidManifest.xml

iOS

  • plist

    這部分用到PlistBuddy。能夠自行google一下。

    plist文件,是由key:value組合而成。

    咱們只用將Build號寫入/修改到相應plist文件便可。

    PlistBuddy是個工具。幫助你方便更新 plist文件。

  • 步驟

    選擇工程 -> Editor -> Add Build Phase -> Add Run Script Build Phase

    選擇工程 -> Build Parse標籤 -> Run Scrpit

  • scrpit

    ver=`git rev-list HEAD | wc -l`
      echo "Build number is ${ver}"
      filepath="${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}"
      echo "Updating ${filepath}"
      `/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${ver}" ${filepath}`
      filepath="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist"
      echo "Updating dSYM at ${filepath}"
      `/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" ${filepath}`
      `/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${ver}" ${filepath}`
相關文章
相關標籤/搜索