Android iOS项目,修改版本号脚本及结合IDE的使用

 

Android iOS项目,修改版本号脚本及结合IDE的使用

来由:

每次Build都需要更改版本号的工作乏味无趣而且还容易忘记。

当初写android时,只是想到在编译之前执行一些脚本而到达目的。但是每次自己还得执行脚本就放弃了。

后来写iOS时,无意中发现xcode是支持编译前支持执行脚本的。果断写了一个(见下文)。

恩。没准Android studio也有。翻了翻IDE,找到入口(好开心)

正题:

做法:
  1. 生成一个版本号
  2. 在编译之前,修改相关配置文件
Android:
  • 环境

    • IDE: Android studio (eclipse我没实践,使用eclipse的朋友可以google一下)

    • Script: shell

    • OS: Mac OS X

  • 步骤

    1. Run -> Edit-Configuration

    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}`
    
posted @ 2013-12-27 15:41  wFeng  阅读(715)  评论(0编辑  收藏  举报