擁抱 Android Studio 之一:從 ADT 到 Android Studio

jopen 10年前發布 | 96K 次閱讀 Android Studio開發工具 Android Studio

擁抱變化,擁抱新事物

多年前央視有一套電視系列片:大國崛起,主要講述那些曾經在站在世界舞臺中央的國家的興衰歷程。縱觀歷史,正是創新使得一個國家得以崛起。

Android 開發因為涉及到代碼編輯、UI 布局、打包等工序,最好使用一款 IDE。Google 最早提供了基于 Eclipse 的 ADT 作為開發工具,后于2013年 Google I/O 大會發布基于 IntelliJ IDEA 開發 Android Studio。后者正式版發布之后,Google 宣布不再持續支持 ADT。Android Studio 有更快的速度,更好的代碼完成等特性。

時至今日(2015-11-30),在我們運營 bugtags.com 這一款高效的 app 測試服務的時候,在幫助用戶集成 Android SDK 的過程中,我們發現很多遺留項目依舊沒有從 ADT 遷移過來,依然有很多用戶對 Android Studio 懷著恐懼與不信任。我想我們有義務去做一個系列介紹,讓更多的人擁抱變化,擁抱新鮮事物。

本文系列一,主要介紹兩個工具的比較及其遷移。

Android Studio(IntelliJ IDEA)vs. ADT(Eclipse)

本文并不打算涉及 IDE 的圣戰,理論上只要配上插件,用得趁手,都差不多。然而本文也是帶有傾向性的,因為工作原因,筆者使用過 Eclipse 多年,也使用過多款 JetBrains 的 IDE,均不辱 XXX 語言開發第一 IDE 之名。下面介紹一些 Android Studio 的優勝的地方。

  • 更快的運行速度;
  • 更智能的自動補全;

    你不用自動補全?那其實你 ADT 也不需要的, vi 或者一個記事本就足夠了;

  • 更好的重構,IDEA 會幫你找到每一個需要重構的地方;
  • 更好的索引與搜索,雙擊 shift 鍵搜索,文件搜索,代碼搜索,都很方便;
  • 更好的版本管理功能(git/SVN);
  • 更靈活強大集成腳本 gradle;
  • 原生支持的從項目文件到操作系統的文件瀏覽器功能;

    ADT 可以通過插件支持?問題來了,我為啥要去花寶貴的時間折騰這個插件呢;

  • ……

以上省略一萬字。

相信我,對于 Android 開發者,切換到 Android Studio,經過短短學習曲線之后,你會愛上這個 IDE,并且即將由奢入儉難,再也回不去了。

從 ADT 遷移到 Android Studio

如果你看到上面的優點,已經克服了心中的懷疑和恐懼,準備動手遷移,下面提供一些遷移提示。

常用網站

部分需要KX上網

你無法KX上網?趕緊搜一下,自己搭或者買一個吧。世界如此多嬌,人生苦短。將你遇到過問題的出錯信息用 Google 搜索,第一條來自 stackoverflow 的答案就是你想要的。

ADT 與 Android Studio 目錄結構對比

ADT 項目結構

擁抱 Android Studio 之一:從 ADT 到 Android Studio

project/src/:放置代碼文件

project/libs:放置 .jar 庫或者 .so 庫

project/res:項目資源文件

project/AndroidManifest.xml:工程 manifest 文件

Android Studio 項目結構

擁抱 Android Studio 之一:從 ADT 到 Android Studio

Android Studio 的一個 project (項目)下可以包含多個獨立的 module(模塊),圖中 Bugtags-Android-Demo 便是一個項目,app 便是一個 module。結構如下。

project/build.gradle:項目的 build.gradle 文件,主要是全局的遠程庫配置、gradle 插件版本等信息

project/app:名字為 app 的模塊

project/build.gradle:模塊的 build.gradle 文件,是最關鍵的配置文件,后續會有文章繼續專門介紹 gradle build system

project/app/src:源碼文件夾

project/app/src/java:放置代碼文件

project/app/src/jniLibs:默認的.so 庫放置的位置,可以在模塊的 build.gradle 中通過jniLibs.srcDirs 值來修改所在位置

project/app/libs:放置 .jar 庫

從 ADT 遷移

本文主要參考這篇遷移指南。Android Studio 提供了非常友好的導入向導。

在 Android Studio 導入

File->New->Import Project,找到你的 ADT 的 workspace 下的項目,一路點擊 YES,會生成一個全新的項目。

問題

  • 項目之間有依賴

直接導入使用依賴的項目,被依賴的項目就會自動被導入到同一個項目中,作為一個模塊。

下文中的左側是 ADT 項目,右側是 Android Studio 項目。

其中 Bugtags-Android-Eclipse-Demo 使用 Bugtags-Android-Eclipse-Lib 作為依賴。

擁抱 Android Studio 之一:從 ADT 到 Android Studio

  • 停留在界面上不動

擁抱 Android Studio 之一:從 ADT 到 Android Studio

這個狀態是 gradle 構建腳本嘗試去下載 gradle 的 wrapper,這個 wrapper 大概 3M,需要KX上網,早期很多人就是在這個頁面卡住,放棄了 Android Studio。確保你已經KX上網,并且耐心等待,又或者點擊取消,先進項目看看。

Android Studio 的幾個關鍵概念

如果上面沒有問題,你已經能夠正常的看到 Android Studio 的項目工程了。

有問題?在文章下留言或者加 qq 群:453503476,希望能幫到你。

IDE 使用、快捷鍵什么的,筆者認為沒什么可寫的。自己熟悉吧。下面介紹一個對于 ADT 而言全新的概念。

build.gradle

在項目的 build.gradle 文件中,有如下內容:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()//這是構建插件所使用的遠程庫,后續會有一篇介紹庫的含義
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha1'//這是項目所使用的 Android gradle 版本
    }
}

allprojects {
    repositories {
        jcenter()//這是使用遠程庫依賴的時候,的遠程庫
    }
}

在每個模塊的 build.gradle 文件中,初始會有如下內容:

apply plugin: 'com.android.library' //com.android.library標示是一個庫模塊;
//com.android.application標示這是一個應用模塊

android {
    compileSdkVersion 19//編譯 sdk 版本
    buildToolsVersion "23.0.2"//構建工具版本

    defaultConfig {
        minSdkVersion 9 targetSdkVersion 19 }

    buildTypes {//打包類型
        release {
            minifyEnabled false//是否混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' }
    }
}

dependencies {//依賴管理
    compile 'com.bugtags.library:bugtags-lib:1.0.8'//遠程
    compile fileTree(dir: 'libs', include: ['*.jar'])//本地 jar 依賴
}

依賴管理

遠程依賴:

dependencies {
     compile 'com.bugtags.library:bugtags-lib:1.0.8' }

Android Studio 使用 gradle 進行依賴管理,兼容了 maven 的庫,一個經典的 maven 庫的配置如下:

<dependency>
    <groupId>com.bugtags.library</groupId>
    <artifactId>bugtags-lib</artifactId>
    <version>1.0.8</version>
</dependency>

對比之后,你會發現 compile 的內容中,分為三部分 groupdId:artifactId:version

com.bugtags.library對應groupId

bugtags-lib對應 artifactId

1.0.8對應 version

本地依賴

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])//本地 jar 依賴
}

Android Studio 工程創建的時候,默認會有如上依賴,意義是把放在與該 build.gradle 文件同一層的 libs 文件夾中所有的 jar 文件都作為庫依賴。

同步依賴

一般情況下,你配置完了build.gradle之后,該編輯框的上方會出現正在 sync 的標記。耐心等待完成即可。如果發現沒有同步成功,可以使用下面這個按鈕:

擁抱 Android Studio 之一:從 ADT 到 Android Studio

如果長時間未成功,則可以在控制臺使用:

./gradlew build --info

以上命令來看控制臺輸出。

build variant

Android Studio 內置了多渠打包功能,就是所謂的 build variant,可以新建若干個 productflavor 來達到目的。 大致可以這樣:

這個功能十分的靈活和強大,舉個例子,你想要有兩個版本,一個收費版,一個免費版,在若干代碼文件和資源文件上,都不大一樣。

以前你可能選擇在代碼中判斷當前版本,加載不同的代碼和資源。或者使用 git 的 branch。

現在你可以使用 Android Studio 直接使用多個 productflavor, 在對應的 flavor 放置那些有區別的代碼和文件。一次打包,即可完成。 在下一篇系列文章中,筆者將會詳細介紹這個功能。

總結

新版本的 Android Studio 還有更多強大的功能,包括最新 preview 的 instant build,將會極大提升構建速度。后文將會詳細介紹。

一個工程從 ADT 遷移到 Android Studio 只需要很短的時間,連帶熟悉基本概念,半天基本可以完成。如果還沒有進行遷移的同學,要抓緊了,不要被世界拋棄了。

筆者 kvh 先在這里挖一個系列坑,希望這個系列能夠讓讀者快速掌握 Android Studio 與 gradle,請持續關注。

  • 擁抱 Android Studio 之二:Android Studio 與 gradle 深入
  • 擁抱 Android Studio 之三:maven 庫,本地庫與發布到 bintray 或者 mavenCentral
  • 擁抱 Android Studio 之四:gradle 插件使用與開發

來自:http://my.oschina.net/stephenzl/blog/537975

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!