將 Android Project 轉為 Gradle based

Android Studio 早前正式脫離 beta,Google 也宣佈放棄支援 eclipse,加上越來越多 library 支援 gradle,是時候將舊的 android project 轉為 gradle based。

除了運行速度快,Android Studio 對 Gradle 的支援較好。Gradle 現在是開發 android 的 de facto,對我來說它是 ant + maven 的混合體,設定相對簡單,不用處理編緝麻煩的 xml

Eclipse project

要將 Eclipse project 轉為 Android Studio's project,很簡單,只要 right click project,然後 export 選 Generate Gradle builde files,再到 Android Studio import build.gradle 便完成。

IntelliJ Project

若是 IntelliJ Project 的話便麻煩一點,要自行加入 build.gradle

  1. 加入空白檔案,將其命名為 build.gradle

  2. build.gradle 加入以下內容

     buildscript {
     	repositories {
     		mavenCentral()
     	}
     	dependencies {
     		classpath 'com.android.tools.build:gradle:0.5.+'
     	}
     }
     apply plugin: 'android'
    
     dependencies {
     	compile fileTree(dir: 'libs', include: '*.jar')
     }
    
     android {
     	compileSdkVersion 18
     	buildToolsVersion "18.0.1"
    
     	sourceSets {
     		main {
     			manifest.srcFile 'AndroidManifest.xml'
     			java.srcDirs = ['src']
     			resources.srcDirs = ['src']
     			aidl.srcDirs = ['src']
     			renderscript.srcDirs = ['src']
     			res.srcDirs = ['res']
     			assets.srcDirs = ['assets']
     		}
    
     		// Move the tests to tests/java, tests/res, etc...
     		instrumentTest.setRoot('tests')
    
     		// Move the build types to build-types/<type>
     		// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
     		// This moves them out of them default location under src/<type>/... which would
     		// conflict with src/ being used by the main source set.
     		// Adding new build types or product flavors should be accompanied
     		// by a similar customization.
     		debug.setRoot('build-types/debug')
     		release.setRoot('build-types/release')
     	}
     }
    

    其中的 sourceSets 裏的的 srcDirs 設為對應的資料夾位置。

  3. 查看自己 project 用了那些 library ,找出對應的 gradle install 方法,加進 build.gradle 裏。當然,你也可以不做這步,但做了的話,將來要更新 library 便方便得多了。

  4. 如你有自行 install gradle, 可以用 cmd 到 project directory 執行 gradle assembleDebug ,讓 gradle 下載對應的 library。如沒有的話,可用 andriod studio 內置的功能 (View -> Tools Window -> gradle) 去執行 assembleDebug

  5. gradle 執行完成後便萬事 okay。

結語

每次更改後 build.gradle 都要讓 Android Studio sync 一 次才能更新設定。若要新增 library 便一定要有網絡連線,因為 gradle 自動替你下載相關的 library 和其 dependency,下載完成後可以將 gradle set 做 offline mode ,對網絡有限制的開發者很有用。

雖然 gradle 功能強大,但暫時自己用到的就只是 library management 和改 package name 而已。下次再談談 gradle 有什麼有用的功能。

參考連結