配置Android項目 - 版本名稱和代碼
開發人員通常給android versionName&versionCode使用一些硬編碼值。
這種方法有幾個缺點:
- 你永遠不知道哪個提交代表一個特定的版本。
- 每當你增加versionCode和更改versionName,你必須修改build.gradle文件。
如果你使用git作為源代碼控制系統,它也可以幫助你生成android versionName&versionCode。常見的做法是使用git標簽來指示新版本的發布。
Version Name
對于versionName,我們可以使用git describe命令。
a.該命令查找從提交開始可訪問的最近的標記。
b.如果標記指向提交,則只顯示標記。
c.否則,它將標記名稱與標記對象頂部的附加提交數以及最近提交的縮寫對象名稱作為后綴。
Example (a-b)
- 使用tag1.0標記特定提交
- 簽出此提交
- 調用git describe -tags
- 輸出:1.0
正如你看到的,如果你使用一些標簽在一個HEAD提交上調用git describe,它會輸出這個標簽。
Example (a-c)
- 標記tag為1.0的提交
- 再添加兩個提交
- 調用git describe -tags
- 輸出: 1.0-2-gdca226a
使用git提交哈希“1.0-2-gdca226a”,我們可以很容易地找出從哪個特定的提交構建。
Version Code
對于versionCode,我們可以使用標簽的總數。因為每個git標簽指示一些版本,下一版本的versionCode將總是大于previous。
在上面的示例中,我們有3個標簽。這個值將用于我們的versionCode。
但是我們不會為每個中間版本創建一個git標簽,因此對于dev build我們可以使用HEAD提交的時間戳。
在上面的示例中,HEAD提交的時間戳等于1484407970(自UNIX紀元1970年1月1日00:00:00 UTC以來的秒數)。這個值將用于我們的versionCode。如果你想將它轉換為人類可讀的日期使用currentmillis.com網站。在我們的情況下,它是Sat 1月14日2017 15:32:50 UTC。
Groovy way to use git
要使用git我建議使用一個稱為grgit的庫。創建具有以下內容的script-git-version.gradle文件:
將其應用于您的build.gradle文件:
要檢查version name 和 code是否正確生成調用gradle任務./gradlew printVersion它給出類似的輸出:
最后在build.gradle文件中使用gitVersionName,gitVersionCode和gitVersionCodeTime變量。
運行項目并驗證應用版本。
這種方法的好處:
- 不需要修改build.gradle文件 - versionCode和versionName是自動生成的。
- 你可以很容易地找出從哪個提交生成。
注:你可以嘗試其他的方式來標記版本名:包括分支名稱,時間戳等。
來自:http://mafei.me/2017/03/22/配置Android項目 - 版本名稱和代碼/