1. 程式人生 > >手把手圖文教你從Eclipse專案遷移Android Studio

手把手圖文教你從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乾貨,原始碼分析,歡迎關注我的微信公眾號,掃一掃下方二維碼或者長按識別二維碼,即可關注。


這裡寫圖片描述

如果你覺得好,隨手點贊,也是對筆者的肯定,也可以分享此公眾號給你更多的人,原創不易