希望各位看完這篇文章之後,你可以勇敢的關掉Eclipse(除非你跟我一樣也有另外在寫Java就不用),下載安裝並開啟Android Studio來用!!
以下中英文摻插,用中文實在翻不出一個有感覺的字詞,就直接寫英文,然後Android Studio有時會簡寫成AS。
我盡量把截圖放上,所以圖多,目的在於讓你可以更了解。

你將會知道...

  • Part1. Android Studio是?
  • Part2. 特色功能。
  • Part3. Gradle簡單介紹。

Part1. Android Studio是?

  1. Android Studio本身是Google官方推出的Android IDE。(Eclipse Android ADT確定不再發佈更新了喔!!)
  2. 是以IntelliiJ IDEA為基礎去改造的工具。
  3. 採用Gradle build工具。
  4. 更多的介紹google一下就一堆,我就不再贅述。

Part2. 特色功能

  1. Auto Complete:比Eclipse ADT更強的(有自動學習功能,會自動辨識並且顯示最相關的提示)程式碼自動提示和自動完成功能。
  2. Build Variants: 這像功能可以幫你build不同功能版本的apk,例如:debug / release,或是你的app有分免費版和付費版,兩者功能不相同,都可以同時在build variant這功能來建置。
  3. Productivity Guild:在功能表的 [Help] -> [Productivity Guild] 可以開啟,裡面有列出一些能提高生產力的功能並且統計你使用的次數和最近一次的使用時間。


  4. 多裝置除錯:在測試App階段,允許選擇多個裝置,讓你可以一次同時測試不同的裝置。

  5. 多裝置、多theme的Layout Preview:在介面設計工具,除了有即時的預覽之外,也允許讓你同時預覽不同裝置的樣子,或是你可以直接套用不同的theme。

  6. 超多的plugins:跟Eclipse一樣擁有很多外掛可以安裝使用,安裝方法為開啟設定視窗Setting -> Plugins 來檢視。

  7. DDMS:開啟方法是左下的6: Android分頁標籤點下後會顯示,DDMS的左邊有工具列,包含了很多監測的工具,像是App截圖或錄影、記憶體使用情況、執行GC、Java Heap Dump...等。

  8. 監測記憶體使用狀況:從右下的Memory Monitor分頁標籤可以開啟記憶體監測的功能視窗,你就可以直接看到記憶體使用狀況的圖表。

  9. 建立不同裝置類型的專案:我們可以直接使用AS來開發手機、平板、TV、Wearable和Glass的專案。

  10. Code Tempate:在建立新專案或是新檔案的時候,我們可以選擇預先提供的程式碼樣板,像是不同類型的Activity、Fragment、或Service...等。

  11. Layout Tools Attributes:在AS新增的Tool Attributes主要是用在設計階段,最常出現在Layout的XML檔案裡面,像是tool:context出現在Activity的Layout.xml檔裡面,是紀錄該Layout.xml檔案是屬於某個Activity。 我覺得非常好用的還有 tools:text,我們一般如果想預覽TextView實際上套用文字的樣子,我們以前會在該TextView裡面加入android:text='我是測試文字,然後才能在Design Preview當中看到實際上的樣子,然後App要發怖時才把這個測試文字移除,現在如果直接加入`tools:text='我是測試文字',我們就可以直接在Layout Preview當中看到套用文字的介面實際樣子,但是在實際的App裡面就不會出現。記得,Tools Attributes是用在設計階段,只會在設計階段看到,完全不會影響到實際執行的樣子。

更多Tools Attributes介紹可以參考這篇的介紹。

  1. Resource Preview:在資源檔當中,我們可以直接預覽,例如:在activity_main.xml當中我們寫到@string/app_name,可以直接預覽到對應的文字是什麼,或是@color/text_current_position可以直接預覽顏色。

Part 3. Gradle簡單介紹

Gradle是一種依賴管理工具,基於Groovy語言,捨棄了基於XML繁瑣的配置方法,而採用Groovy的DSL語言。
而AS導入了Project v.s. Modules的概念,下面分別作簡單的講解:

Project:
1. 是一個完整的app專案。
2. 可以包含很多的modules。
Module:
1. 模組是一個獨立的元件,可以獨立的build、測試和除錯。
2. 在AS當中有三種模組:Java Library, Android Library, Android Application。

在AS當中project structure有些更動,和原本的eclipse專案結構有所不同,大家可以在下圖看到Project的根目錄底下就兩個Modules(粗體),頂層專案目錄下個別有build.gradlesettings.gradle兩個build files, 每個Modules也個別有一個build.gradle檔案(*紅字),下面在一一做簡單的介紹。

頂層settings.gradle

用途在於告訴gradle專案底下有哪些Modules要來build。

include ':app'
include ':iconicDroid'

如果今天你的Modules沒有在這個專案底下,而是在本機電腦的其他位置,你可以先[Import Module]加入,或是用下面語法來include進來。

project(':library1').projectDir = new File('other/place/on/the/computer')
頂層build.gradle

用途在於增加所有子專案或是所有模組的共同組態,例如你的remote repository、gradle的dependencies...等。

// 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:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong

        // in the individual module build.gradle files

    }
}

allprojects {
    repositories {
        jcenter()
    }
}
各Module的build.gradle

用途在於各模組可以增加不同的Android設定(例如:compileSDKVersion, buildType)以及dependencies。這邊記得兩件事情:

  1. 一個模組,就會有一個build.gradle
  2. 每個模組的dependencies就寫在自己模組底下的build.gradle檔。
apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "gov.epa"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile project(':iconicDroid')
}
Module Dependencies

模組的dependencies有分成下面三種:

  1. 相同專案底下的Module:這樣的寫法要確保該模組是在此專案底下,或是已經import進該專案。
    compile project(':library1')
    
  2. 在本機電腦的檔案目錄:可以用來加入*.jar檔案或是libs/資料夾。
    compile files('libs/gson.jar')
    compile fileTree(dir:'libs', include:['*.jar'])
    
  3. Remote Repositiory:加入非本機端的程式庫,gradle會自動幫你完成所有的import動作(例如:下載所需要的jar,管理該程式庫的dependencies)
    compile 'com.android.support:support-v4:21.0.3'
    

結語

以上大致上簡單的介紹到此,我個人的經驗是只有在從eclipse轉換成gradle的時候有些新東西要學不太習慣而已,其他都很OK,如果有使用上的問題歡迎留言問我,至於還沒用的趕緊來用,你會體驗到它的強大!!

Comments

comments powered by Disqus