手把手圖文教你從Eclipse專案遷移Android Studio
從Android的誕生,大家所熟知的開發工具就是IDE就是Eclipse,隨著Google大力推薦Android Studio,Eclipse將慢慢推出歷史舞臺,但是從前很多老專案都是由Eclipse開發,我很信還有絕大部分人在用Eclipse開發,為了適應新形勢,遷移已成必不可少的環節。今天以我的開原始碼紅包精靈(之前用Eclipse開發)為例,github:https://github.com/hejunlin2013/RedPackage,實現在Studio也能開發。
首先搞清楚從哪入手,studio引入了module(模組化)概念,一個工程下面,可以有不同的moudle,這樣解耦程式碼,提供了非常便利的思路。google就是告訴大家,要朝著這個方向走。提高開發效率,用任正非一句話說:中國13億人民,我們這幾個把豆腐磨好,磨成好豆腐,你們好好去發豆芽,把豆芽做好,我們13億人每個人做好一件事,拼起來就是偉大祖國。對於模組化,這個道理也是相通的。
Androd Studio的預設工程結構和Eclipse工程本質區別在哪?
對於Studio來說,app module下包含一個src,src下就有java,res,AndroidManifest.xml,
對於Eclipse來說,一個工程下,包含src,res,AndroidManifest.xml檔案。
能不能通過一些指令碼把這些位置移動下,就能把Eclipse工程構建成一個Studio工程了呢?
Gradle提供了自定義目錄的功能,因為它是基於Groovy指令碼的,指令碼總是能幫我們省下許多繁瑣的事,像python,lua
話不多說直接上程式碼:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
這裡解釋下上面的意思, manifest.srcFile ‘AndroidManifest.xml’表示把AndroidManifest.xml這個檔案放到manifest目錄下作為原始檔,java.srcDirs = [‘src’],這個表示把src目錄放到java目錄下的src目錄,後面也是依此類推
完整build.gradle指令碼如下:
apply plugin: 'com.android.application'
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
}
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
defaultConfig {
applicationId "com.hejunlin.camerasample2"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile "com.android.support:support-v4:23.4.0"
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
這裡要主意一個問題,當把Eclipse這個專案向Studio中構建時,會有一個settting.gradle,如圖:
用於配置module的,內容如下:include ‘:app’,由於是從eclipse遷移過來的,沒有module這一說,需要把這個檔案刪除掉。不然就會出現如下所示:
刪除之後,就一切正常 ,看下遷移後Eclipse和Studio程式碼的結構(對用Eclipse開發人員一點也不影響):
Eclipse:
Studio:
整個過程就是這樣,如果還在用Eclipse開發的,趕緊遷移到Studio上吧,如果實在有人想用,原來工程一點也不影響,這樣雙向開發雖然怪,但是用慣了studio的人來說,小小的指令碼改變是開發效率。
第一時間獲得部落格更新提醒,以及更多android乾貨,原始碼分析,歡迎關注我的微信公眾號,掃一掃下方二維碼或者長按識別二維碼,即可關注。
如果你覺得好,隨手點贊,也是對筆者的肯定,也可以分享此公眾號給你更多的人,原創不易