編輯:關於Android編程
AndroidStudio 的SVN 安裝和使用方法與我以前用的其他IDE 都有很大差別,感覺特麻煩,網上相關資料很少,貌似現在 Git 比較流行,之前有用過 github 但是他只能是開源項目免費,下面總結最近自己安裝和使用 SVN 的一些經驗總結:
如果遇到 ignore 或其他設置無效等意外情況,可以嘗試重啟 androidstudio 或執行下 svn 的 update 試試
一、安裝配置:
以前使用 ZendStudio 等等都是直接安裝插件就可以了,但這裡不行,需要自己獨立安裝帶有 command line 功能的 SVN 客戶端,我使用的是TortoiseSVN,據說 1.7 之後開始支持 command line 模式,我現在用的是 1.8.5 版本
如圖,安裝時必須自定義選擇 command line 否則不會安裝的
安裝完成後,打開 IDE 的 setting 配置面板:
如上圖路徑 Version Control 下的 Subersion 設置:
Use Command Line Client 選擇浏覽到你本地安裝 TortoiseSVN 的 svn.exe 文件路徑,如下圖:(注意輸入框最右側有個浏覽的按鈕,有可能沒顯示出來,拉伸窗口即可見)
配置好之後,安裝即完成
二、導入、簽出 SVN
這個比較簡單的:
在 CVS 菜單下 有個 Import into Version Control 選擇 svn 就行了
簽出操作也差不多,也可以在新建項目中從 svn 簽出並生成項目
另外:最下面一個欄目 Browse VCS Repository 可以浏覽遠程SVN 服務器上的文件並進行刪除等操作
三、Ignore 指定忽略文件或目錄
AndroidStudio 的 Setting 面板中配置的 ignore 似乎沒什麼效果,
下面先看看忽略掉的目錄的顯示效果(比較暗的黃綠顏色)
在 Setting 中的配置,主要忽略的目錄和文件:(雖然感覺這裡的設置不起作用,但還是設置下吧)
系統默認有兩三個文件和目錄,我自己添加的 .gradle .idea build 目錄 我覺得這三個目錄不應該跟隨 svn,每次編譯時每個人本地環境是不一樣的,而且我之前遇到 build 和 idea 下面有個library 文件老是沖突,每次更新一大堆,所以去掉了。
通過 TortoiseSVN 來添加忽略:
對於更新和提交
這兩個小按鈕很方面操作,向上的綠色是commit ,向下的藍色 是 update。
四、使用Gradle插件自動填寫SVN號,並發布(拷貝)到指定目錄
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中還有其他的數據,例如最後提交等。需要的可自行更改。
App 版本號:
App版本號可以在 defaultConfig 中直接配,但有時候寫在 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 的路徑,是相對與當前的 build.gradle的,標准的AS創建是在 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"; // 目標路徑 output.outputFile = new File(targetDir, "App_${getVerName()}_${getSvnRevision()}.apk"); println(output.outputFile) } } } } }
一、問題概述 在android開發中,經常會使用到文件下載的功能,比如app版本更新等。在api level 9之後,android系統為我們提供了DownLoa
隨著移動互聯網的快速發展,它已經和我們的生活息息相關了,在公交地鐵裡面都能看到很多人的人低頭看著自己的手機屏幕,從此“低頭族”一詞就產生了,作為一
之前在進行cocos2dx開發時,已經詳細介紹了如何將win32的c++代碼移植到Android平台,當再次回顧時,發現一些基礎的東西理解並不是很徹底,今
使用HTTP訪問網絡資源 前面介紹了 URLConnection己經可以非常方便地與指定站點交換信息,URLConnection還有一個子類:HttpURL