自從android官方宣布不再提供eclipse adt的更新之后,android studio的推進速度超乎想象得快,不管是github上的源碼分享,還是stackoverflow上的問題提問,幾乎都是基於android studio開發環境的,而且官方的所有文檔都做了調整更新,從guide,training到tools部分,都已經基於android studio來進行講解說明,eclipse已經幾乎找不到影子了,為了順應趨勢,我們也來學習android studio的開發環境使用。
首先,android studio是官方提供的專門針對android開發者的開發環境,它是基於IntelliJ IDEA的,說到IDEA我想很多人都不陌生,對比eclipse,同樣是java語言開發的集成環境,IntelliJ在業界被公認為最好的java開發工具之一,在啟動速度、智能代碼助手、代碼自動提示、重構、J2EE支持、Ant、JUnit、CVS整合、代碼審查、 創新的GUI設計等方面的功能可以說是秒eclipse幾條街,被大家稱為java開發的神器,而旗下的webstorm開發工具,也同樣被開發者稱為javascript開發神器。
下面我們來看一下官方列出的android studio的幾個特點:
1.基於gradle的項目構建系統,這讓我們在構建android項目的時候更加靈活
2.可以通過變量配置來生成多個版本的apk文件
3.擁有大量的代碼模板可以快速地幫我們構建android項目
4.可進行拖拽的ui編輯器
5.內置link tools代碼優化工具,可以捕捉性能,可用性,版本兼容等問題
這些特點看似跟eclipse大同小異,但是實際使用起來卻讓人眼前一亮,下面我們就來實際看看android studio的一些優秀特質:
項目和文件結構
首先我們使用android studio創建一個項目,創建過程省略xxx字,我們可以看到,我們創建的項目會默認按照android studio的android項目視圖結構來顯示,該視圖是扁平化的結構,通過它,我們可以很清楚地看到我們的manifest配置文件目錄,java代碼目錄,res資源文件目錄以及對應的gradle項目構建配置文件,如下
java/
- android項目的java源代碼目錄manifests/
- 各個模塊的mainfest文件的存放目錄res/
- 項目的布局,資源等文件的存放目錄Gradle Scripts/
- gradle的配置文件目錄
如果你以為僅僅如此,那就錯了,該視圖除了默認的清晰的項目結構,還會自動對資源文件進行歸類並放到一個通用目錄下,如圖所示:
android studio的android項目視圖會自動將我們的針對不同屏幕密度的資源文件ic_launcher.png一起歸類到ic_launcher.png 目錄下,同時dimens.xml也被進行了歸類,
這樣便方便我們開發者更快速地查找、定位和比較對應的源文件,這在eclipse中是前所未見的。
當然了,我們硬盤上的項目並不是android視圖結構所展現出來的那樣,上圖我們看到的目錄結構只是虛擬化出來的,如果我們想查看硬盤上真實項目的結構,我們可以點擊左上角的下拉框,切換到project視圖
Android Studio的其他項目視圖
緊接上面的操作,我們把android studio切換到了project 視圖,如果你之前一直使用eclipse來做android項目開發,那你應該會注意到我們的android studio中創建出來的項目的目錄結構跟eclipse完全不同,
在android studio中,每個項目實例都會包含一個或多個應用程序模塊,而每個應用程序模塊又會包含完整的源碼集合模塊,
包括 src/main/ 和 src/androidTest/ 文件夾,資源,項目構建文件和android的manifest配置文件這些,
大部分情況下,我們只需要更新src/main/目錄下的項目代碼來更新項目,同時通過修改build.gradle文件來配置我們的項目構建配置,
而 src/androidTest/ 這個目錄則是留給我們來寫測試用例的
我們還可以根據我們的需要自己選擇對應的視圖目錄去關注項目的特定方向,android studio為我們提供了以下幾種視圖:
- Packages
- Project Files
- Scratches
- Problems
- Production
- Tests
例如,當我們的代碼中出現錯誤時,我們可以選擇problem視圖,這時problem視圖會直接將我們提示出錯的文件列出來,這樣我們就能直接定位錯誤文件從而進行修改完善,如圖:
,我故意將MainActivity里的代碼寫錯,此時,我將視圖切換到problem,這時就會將我們的錯誤文件顯示出來,是不是很人性化?
如果你想了解更多相關信息,可以參考 IntelliJ project organization 和 Managing Projects。
創建新文件
android studio給我們提供了相當方便的快捷鍵來添加代碼文件或資源文件,
例如: 當你選擇了layout布局目錄或者布局文件,這個時候,只要你點擊ALT+INSERT(MAC下為COMMAND + N),此時會默認彈出文件創建窗口,並且會將對應的文件類型放在第一個,當我們按下回車,此時我們只需要填寫文件名等必要信息即可快速創建我們對應類型的文件了,java文件等同上。
是不是很方便,呵呵,接下來我們來了解下android studio中的android 構建系統
Android構建系統(Android Build System)
Android構建系統(Android Build System)是指用來構建、測試、運行和打包應用程序的工具,這套構建系統在android studio中取代了eclipse ADT中基於ant的系統,它可以作為android studio上一個完整的工具進行使用,同時也可以直接通過命令行來獨立調用執行,
這套系統提供了一些特殊的功能:
1.自定義、構建和擴展構建過程
2.使用同一個項目創建具有不同功能的apk
3.在多個資源集之間重用代碼
android構建系統的靈活性使得我們可以在不修改項目核心文件的基礎上實現上述的功能,后面我們會進行詳細的講解
用來標識應用程序包的標識屬性Application ID
跟eclipse不同,在android studio的項目中,我們需要在build.gradle文件中配置application id這個屬性來對我們項目的package包做唯一標識,如下:
1 apply plugin: 'com.android.application' 2 3 android { 4 compileSdkVersion 19 5 buildToolsVersion "19.1" 6 7 defaultConfig { 8 applicationId "com.example.my.app" 9 minSdkVersion 15 10 targetSdkVersion 19 11 versionCode 1 12 versionName "1.0" 13 } 14 ... 15
當我們使用構建變量來發布項目時,構建系統允許我們針對不同的產品類型和構建類型定義唯一的applicationId
productFlavors { pro { applicationId = "com.example.my.pkg.pro" } free { applicationId = "com.example.my.pkg.free" } } buildTypes { debug { applicationIdSuffix ".debug" } } ....
applicationId雖然是用來唯一標識包名的,但是在manifest中我們還是得指定對應的package,manifest中的package是用來關聯我們的R class文件和解決activity及service的注冊問題的,如下:
package="com.example.app">
調試和性能
Android Virtual Device (AVD) Manager
AVD就是我們的android 虛擬設備管理工具及用來管理我們的android 模擬器,它預先提供了一些模擬器,這些模擬器基本都是目前比較受歡迎的一些配置,尺寸以及分辨率
我們只需要點擊android studio工具欄上的按鈕便可以打開我們的avd工具,如圖:
我們可以根據需要直接選擇對應的模擬器,也可以根據自己的需求自定義自己的模擬器,android studio的avd提供了非常人性化和直觀的界面,如圖所示:
內聯調試
除了avd更加人性化之外,android studio在debug調試上也更加地方便直觀,在調試視圖中我們可以快速方便地查看內部變量值、關聯的對象引用、方法的返回值、運算表達式以及工具的提示值等相關信息