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}`
相关文章
相关标签/搜索