Android Studio與SVN版本控制程序的協(xié)作使用指南
AndroidStudio 的SVN 安裝和使用方法與我以前用的其他IDE 都有很大差別,感覺特麻煩,網(wǎng)上相關(guān)資料很少,貌似現(xiàn)在 Git 比較流行,之前有用過 github 但是他只能是開源項目免費,下面總結(jié)最近自己安裝和使用 SVN 的一些經(jīng)驗總結(jié):
如果遇到 ignore 或其他設(shè)置無效等意外情況,可以嘗試重啟 androidstudio 或執(zhí)行下 svn 的 update 試試
一、安裝配置:
以前使用 ZendStudio 等等都是直接安裝插件就可以了,但這里不行,需要自己獨立安裝帶有 command line 功能的 SVN 客戶端,我使用的是TortoiseSVN,據(jù)說 1.7 之后開始支持 command line 模式,我現(xiàn)在用的是 1.8.5 版本
如圖,安裝時必須自定義選擇 command line 否則不會安裝的


安裝完成后,打開 IDE 的 setting 配置面板:

如上圖路徑 Version Control 下的 Subersion 設(shè)置:
Use Command Line Client 選擇瀏覽到你本地安裝 TortoiseSVN 的 svn.exe 文件路徑,如下圖:(注意輸入框最右側(cè)有個瀏覽的按鈕,有可能沒顯示出來,拉伸窗口即可見)


配置好之后,安裝即完成
二、導(dǎo)入、簽出 SVN
這個比較簡單的:

在 CVS 菜單下 有個 Import into Version Control 選擇 svn 就行了
簽出操作也差不多,也可以在新建項目中從 svn 簽出并生成項目
另外:最下面一個欄目 Browse VCS Repository 可以瀏覽遠程SVN 服務(wù)器上的文件并進行刪除等操作
三、Ignore 指定忽略文件或目錄
AndroidStudio 的 Setting 面板中配置的 ignore 似乎沒什么效果,
下面先看看忽略掉的目錄的顯示效果(比較暗的黃綠顏色)

在 Setting 中的配置,主要忽略的目錄和文件:(雖然感覺這里的設(shè)置不起作用,但還是設(shè)置下吧)
系統(tǒng)默認(rèn)有兩三個文件和目錄,我自己添加的 .gradle .idea build 目錄 我覺得這三個目錄不應(yīng)該跟隨 svn,每次編譯時每個人本地環(huán)境是不一樣的,而且我之前遇到 build 和 idea 下面有個library 文件老是沖突,每次更新一大堆,所以去掉了。

通過 TortoiseSVN 來添加忽略:

對于更新和提交

這兩個小按鈕很方面操作,向上的綠色是commit ,向下的藍色 是 update。
四、使用Gradle插件自動填寫SVN號,并發(fā)布(拷貝)到指定目錄
Gradle是一個依賴管理工具,它的GitHub項目地址如下:
https://github.com/Goddchen/Android-Gradle-Examples/tree/master/Gradle%20Library%20Projects
安裝布置很方便,這里就不再多說了,下面我們具體來看
svn號:
1、classpath增加依賴:
classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11'
(可查找下最新的版本)
2、在主項目(app的模塊目錄)下的build.gradle中增加:
android {....}
def getSvnRevision() {
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
SVNClientManager clientManager = SVNClientManager.newInstance(options);
SVNStatusClient statusClient = clientManager.getStatusClient();
SVNStatus status = statusClient.doStatus(projectDir, false);
SVNRevision revision = status.getRevision();
def svnNum = revision.getNumber();
println("Svn version: " + svnNum);
println("============");
return svnNum;
}
注意下,revision要本地更新后才能取得。status中還有其他的數(shù)據(jù),例如最后提交等。需要的可自行更改。
App 版本號:
App版本號可以在 defaultConfig 中直接配,但有時候?qū)懺?manifest.中會不容易忘。
def getVerName() {
String manifestText = file("AndroidManifest.xml").getText();
def matcherVersion = Pattern.compile("android:versionName=\"([\\d.]+).*\"").matcher(manifestText);
if (matcherVersion.find()) {
def verName = matcherVersion.group(1);
println("============");
println("App version: " + verName);
return verName;
} else {
throw new GradleException('Not find versionName in AndroidManifest');
}
}
注意下 AndroidManifest 的路徑,是相對與當(dāng)前的 build.gradle的,標(biāo)準(zhǔn)的AS創(chuàng)建是在 src/main/AndroidManifest.xml
使用 可以直接 = ,或者用 ${getVerName()}
編譯后輸出路徑:
這有很多中做法,一種是build后拷貝,一種是直接修改variants的輸出路徑,這里暫時先提供后面一種:
buildTypes {
release {
// .....
applicationVariants.all { variant ->
if ("release".equals(variant.buildType.name)) {// Only Release
variant.outputs.each { output ->
def targetDir = "D:/App"; // 目標(biāo)路徑
output.outputFile = new File(targetDir,
"App_${getVerName()}_${getSvnRevision()}.apk");
println(output.outputFile)
}
}
}
}
}
相關(guān)文章
Android 如何獲取手機總內(nèi)存和可用內(nèi)存等信息
這篇文章主要介紹了Android系統(tǒng)檢測程序內(nèi)存占用各種方法,并對內(nèi)存信息的詳細介紹,需要的朋友可以參考下2016-07-07
Android實現(xiàn)志愿者系統(tǒng)詳細步驟與代碼
這篇文章主要介紹了Android實現(xiàn)志愿者系統(tǒng),本系統(tǒng)采用MVC架構(gòu)設(shè)計,SQLite數(shù)據(jù)表有用戶表、成員表和活動表,有十多個Activity頁面。打開應(yīng)用,進入歡迎界面,3s后跳轉(zhuǎn)登錄界面,用戶先注冊賬號,登錄成功后進入主界面2023-02-02
Android自定義ActionProvider ToolBar實現(xiàn)Menu小紅點
這篇文章主要介紹了Android自定義ActionProvider ToolBar實現(xiàn)Menu小紅點,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09
Android Studio進行APP圖標(biāo)更改的兩種方式總結(jié)
這篇文章主要介紹了Android Studio進行APP圖標(biāo)更改的兩種方式總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
android自定義imageview實現(xiàn)圓角圖片
這篇文章主要為大家詳細介紹了android自定義imageview實現(xiàn)圓角圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02
android實現(xiàn)RecyclerView列表單選功能
這篇文章主要為大家詳細介紹了android實現(xiàn)RecyclerView列表單選功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Android Intent啟動別的應(yīng)用實現(xiàn)方法
我們知道Intent的應(yīng)用,可以啟動別一個Activity,那么是否可以啟動別外的一個應(yīng)用程序呢,答案是可以的2013-04-04

