愛上Android之選擇您的開發工具

本文摘自人民郵電出版社異步社區《愛上Android》
html


京東地址: item.jd.com/12144527.ht…
試讀地址: www.epubit.com.cn/book/detail…

第2章 選擇您的開發工具

工欲善其事,必先利其器。選擇一個好的IDE能夠大幅提升開發效率,節省下的時間能夠去多學習新知識,多陪陪家人。接下來就手把手領着你們把開發環境搭建起來。java


2.1 準備軟件,認識Android Studio


以前開發Android通常用Eclipse+ADT插件,可是Google已經中止維護ADT了,本書鄭重地建議你們,不要用Eclipse開發了,改用Android Studio開發。android


固然Android程序大部分是使用Java語言開發的,因此安裝Java環境是必須的,須要你們下載JDK,目前最新版本是JDK 8。須要注意的是,你們必須準備JDK 7以上的版本(若是使用的是Android Studio 2.1以上的版本,必須準備JDK 8以上),不然達不到Android Studio的安裝要求,建議準備JDK 8(可使用lambda語法)。若是是64位操做系統,建議安裝64位的JDK;若是是32位操做系統,只能安裝32位的JDK。 git


在Windows操做系統中右鍵單擊個人電腦→屬性就能夠查看當前系統的位數。程序員


JDK下載方式很是簡單,直接用百度搜索JDK的下載網站,下載下來直接打開,一直點擊下一步按鈕就能夠安裝成功。github


上面都不是重點,你們若是有Java基礎,這些應該都會了;若是沒有Java基礎,最好先了解一下Java,接下來就進入重點,瞭解一下Android Studio。sql


2.1.1 什麼是Android Studio


Android Studio是一個基於IntelliJIDEA的新的Android開發環境。與Eclipse ADT插件類似,Android Studio提供了集成的Android開發工具,用於開發和調試。數據庫


Android Studio於2013年5月16日在谷歌I/O大會正式對外發布,Google但願Android Studio能讓應用開發更簡單、高效。編程


Windows、Mac OS X、Linux三大平臺所有支持。api


2015年年末,Google開發者大會期間推出了Android Studio 2.0,讓Android Studio編譯和運行速度提升了50倍。


Android Studio 2.2完美兼容了NDK開發,能夠徹底擺脫ADT。


2.1.2 爲何使用Android Studio


緣由一:Android Studio是谷歌開發的,專門爲Android開發量身定作的編輯器。


緣由二:Android Studio最核心的功能就是智能代碼編輯器,它能幫助咱們很是高效地完成代碼補全、重構和代碼分析。作過開發的讀者都知道,沒有代碼提示,估計 90%以上的人就不會寫代碼了。


緣由三:Android Studio的速度更快、更加智能,集成了版本控制系統、代碼分析工具、UI編輯器、Gradle構建工具、Android Monitor、模擬器、各類模板和示例等,還有各類強大的插件支持。


緣由四:谷歌宣佈將在2015年年末前中止對Eclipse Android開發工具的一切支持,包括ADT插件、Ant構建系統、DDMS、Traceview與其餘性能和監控工具。


有了上面這四大緣由,你還有什麼理由不用Android Studio?


2.2 安裝Android Studio


2.2.1 安裝配置要求


如今的電腦配置愈來愈高,圖 2-1 所列的配置要求基本上很容易就能達到了。若是你的電腦配置不知足這些要求,就需換臺電腦了。



▲圖2-1 須要知足的基本系統要求

2.2.2 下載地址

官方下載地址:


官網:developer.android.com/sdk/index.h…


中文官網:developer.android.google.cn/studio/inde…


官網打開樣式如圖2-2所示,這裏提供了三大平臺的安裝包,選擇對應的平臺進行下載。



▲圖2-2 Android Studio

採用官方連接,能夠直接下載所有安裝包,裏面主要包含Android Studio安裝包和Android開發SDK(開發工具包)。固然也能夠分開下載。


2.2.3 安裝JDK


首先須要下載JDK,安裝完成JDK,配置JDK環境變量。下面以Windows平臺爲例進行演示。


右鍵單擊個人電腦→屬性→環境變量,配置JAVA_HOME環境變量。


參考如圖2-3和圖2-4所示的內容。



▲圖2-3 配置環境變量

2.2.4 安裝Android Studio

安裝過程當中的簡單操做在這就不進行截圖講解了,由於只須要點擊Next按鈕。


本文使用「包含SDK」的安裝文件進行講解,其中包含了「不包含SDK(軟件開發工具包)的安裝文件」的安裝步驟。若是使用「不包含SDK的安裝文件」進行安裝,安裝步驟只會比這些步驟少。


若是使用壓縮包安裝,直接解壓縮就能夠用了。本節內容可直接跳過。


步驟1


如圖2-5所示,第一個選項:Android Studio程序,必選。第二個選項:Android SDK(安卓開發工具包),若是電腦中已經存在Android SDK,能夠不勾選。第三個選項和第四個選項都和虛擬機有關係,若是不使用虛擬機或者SDK中的虛擬機,能夠不勾選。



▲圖2-4 配置環境變量


▲圖2-5 步驟1

步驟 2


如圖2-6所示,選擇Android Studio和Android SDK的安裝目錄。



▲圖2-6 步驟2

步驟 3


若是在步驟1中勾選了HAXM(也就是第四個選項,HAXM爲虛擬機提供加速服務),就會出現這一步。


須要根據本身機器的內容大小來設置這個值,通常建議默認便可,如圖2-7所示。



▲圖2-7 步驟3

步驟 4


如圖2-8所示,Android Studio的運行須要VC++環境,Android Studio在安裝的過程當中會自動安裝。這也是爲何建議使用安裝包的緣由。


若是電腦中使用殺毒類的軟件,就會禁止安裝VC++環境,請注意。



▲圖2-8 步驟4

步驟 5


通常不出意外,就會看到如圖2-9所示的界面。說明Android Studio已經安裝成功了。



▲圖2-9 步驟5

接下來是運行Android Studio。


前提準備工做:安裝JDK並配置JDK環境變量。


請使用傳統的JAVA_HOME環境變量名稱。不少人會被提醒JVM或者JDK查找失敗,幾乎都是由於JDK版本或者沒有使用JAVA_HOME這個環境變量名稱的緣由。


步驟 6


每一次安裝都會顯示如圖2-10所示的界面,用以選擇導入Android Studio的配置文件。



  • 第一個選項:使用之前版本的配置文件夾。

  • 第二個選項:導入某一個目錄下的配置文件夾。

  • 第三個選項:不導入配置文件夾。



▲圖2-10 步驟6

若是之前使用過Android Studio,能夠選擇到之前的版本。若是是第一次使用,能夠選擇第三項。


步驟 7


這是在檢查Android SDK。安裝時有時會在這裏等上很長時間,很大的緣由就是:網絡鏈接有問題。能夠經過配置hosts的方式來解決。若是檢查須要更新,則會容許安裝,如圖2-11所示。



▲圖2-11 步驟7

若是想跳過這一步,能夠進行以下操做。


在 Android Studio 安裝目錄下的 bin 目錄下,找到 idea.properties 文件,在文件最後追加disable.android.first.run=true。


步驟 8


若是看到如圖2-12所示的界面,就說明須要更新Android SDK。建議進行更新。


步驟 9


如圖2-13所示,選擇安裝更新Android SDK。第一個選項表示全選,第二個表示自定義。



▲圖2-12 步驟8


▲圖2-13 步驟9

步驟 10


若是步驟9中選擇第一個選項,就會顯示如圖2-14所示的界面。選擇Accept,點擊Finish進行安裝便可。



▲圖2-14 步驟10

步驟 11


若是步驟9中選擇第二個選項,就會顯示如圖2-15所示的界面。須要選擇一個安裝目錄,須要注意的是:這個目錄中不能包含空格以及漢字。不建議使用默認的%APPDATA%目錄。點擊Next後能夠看到相似步驟10的頁面,選擇Accept,點擊Finish進行安裝。



▲圖2-15 步驟11

步驟 12


當更新完Android SDK,就會看到如圖2-16所示的界面。直到這個界面才說明,可使用Android Studio了。



▲圖2-16 步驟12

  • 選項1:建立一個Android Studio項目。
  • 選項2:打開一個Android Studio項目。
  • 選項3:導入官方樣例,會從網絡上下載代碼。此功能在之前的測試版本中是沒有的,建議多看一看官方給的範例。
  • 選項4:從版本控制系統中導入代碼。支持CVS、SVN、Git、Mercurial,甚至GitHub。
  • 選項5:導入非Android Studio項目。好比Eclipse Android項目、IDEA Android項目。若是Eclipse項目使用官方建議導出(即便用Generate Gradle build files的方式導出),建議使用選項2導入。
  • 選項6:設置。
  • 選項7:幫助文檔。

  • 若是一些選項不能點擊,說明JDK或者Android SDK目錄指向有問題,請看下面的設置JDK或者Android SDK目錄。


    2.2.5 設置JDK和Android SDK目錄


    有時運行Android Studio會提醒JDK或者Android SDK不存在,須要從新設置。此時就須要到全局的Project Structure頁面下進行設置。進入全局的Project Structure頁面方法以下。


    方法 1


    如圖2-16所示,選擇Configure→ProjectDefaults→Project Structure。


    方法 2


    如圖 2-17 所示,進入 Android Studio 開發界面,選擇 File→OtherSettings→Default Project Structure。



    ▲圖2-17 Android Studio開發界面

    方法1和方法2都會進入Project Structure界面,如圖2-18所示,在此頁面下設置JDK或者Android SDK目錄便可。NDK暫時不須要。



    ▲圖2-18 設置SDK和JDK

    建議你們把SDK目錄裏的...\sdk\platform-tools這個路徑加入到PATH環境變量中,如圖2-19所示,方便在命令提示符中使用ADB指令。



    ▲圖2-19 配置環境變量,圖中爲Windows 10系統

    2.3 項目的建立

    安裝好了開發環境,終於能夠建立Android項目了。這但是你成爲高手的第一步。接下來介紹建立項目的步驟和出現錯誤時的解決方法。


    前期部分章節贈送教學視頻。視頻主要爲了新手更方便熟悉基本操做。



     


    2.3節、2.4節、2.5節、2.6節對應的視頻地址爲:v.youku.com/v_show/id_X… MzA0MA==.html(建議改爲超清模式觀看)。



    2.3.1 建立項目的步驟


    步驟 1  開始建立工程


    如圖2-20所示,點擊Start a new Android Studio project就能夠建立第一個項目了。



    ▲圖2-20 步驟一,建立Android項目

    步驟 2  設置基本信息


    如圖 2-21 所示,這一步主要設置項目中最基本的信息,包括項目的名字、項目的惟一標示包名和項目存放的地址。須要注意的是,存放工程的目錄不要有中文或者空格。添加C++支持暫時忽略。



    ▲圖2-21 建立工程

    點擊Next進入選擇設備界面。


    步驟 3  選擇設備


    如圖2-22所示,Android系統覆蓋面太廣了,既能夠開發和手機平板電腦,也能夠開發手錶、電視,甚至汽車眼鏡,之後種類還會愈來愈多。學習階段都是以手機爲主,咱們選擇手機就能夠了。



    ▲圖2-22 選擇設備

    關於最低兼容的版本,咱們選擇不一樣版本的SDK,設備覆蓋率會有相應的變化,SDK版本越低,設備覆蓋率就越高。若是想支持更多的設備,就不得不選擇低版本的SDK。


    點擊Next進入選擇Activity模板界面。


    步驟 4  選擇 Activity 模板


    Activity直接翻譯過來是活動的意思。在Android開發中,Activity是用來顯示界面的,是傳說中Android四大組件之一(四大組件還包括廣播接受者、內容提供者、服務)。


    Android Studio爲咱們提供了經常使用的Activity模板,能夠選擇更加快捷的建立。其實這些不一樣的模板大同小異,裏面自動生成了不一樣的模板代碼。在學習階段,建議你們選擇 Empty Activity,這是一個空的界面,咱們能夠經過本身的雙手建立出來不一樣的界面,如圖2-23所示。



    ▲圖2-23 選擇Activity模板

    點擊Next進入設置Activity信息的界面


    步驟 5  設置 Activity 信息


    如圖2-24所示,這一步設置Activity和佈局的名字。通常Activity的名字都是以Activity爲



    ▲圖2-24 定製Activity

    後綴結束,表示這個類是Activity的子類,也就是姓Activity(老外習慣姓在後面)。佈局文件並非Java中的類,它是XML文件,其做用就是爲了輔助咱們開發界面。


    主流的Android開發就是採用Java+XML進行的。


    Backwords Compatibility(AppCompat) 選項通常勾選,勾選建立的 Activity 默認繼承AppCompatActivity,爲了是兼容Android 5.0如下的低版本Android系統。可讓低版本使用新版本的一些特性。


    點擊Finish就完成建立項目了。固然還須要等待一會,如圖2-25所示。



    ▲圖2-25 項目生成中

    2.3.2 解決錯誤(沒有錯誤最好)

    第一次建立項目的時候可能會發生些錯誤。錯誤的緣由最多的就是SDK版本過高或者過低。


    列舉幾個做者碰到的錯誤。


    錯誤 1


    如圖2-26所示,這個錯誤緣由是Gradle插件(Android是經過Gradle打包編譯的)太舊了。解決辦法有兩種。



    ▲圖2-26 錯誤1

    (1)舊的不去,新的不來。升級Gradle插件,舊的就不要了。這個須要下載新的,而後進行配置。


    (2)直接用舊的,但須要修改build.gradle文件。這個比較簡單,適合比較專注的人。具體修改方法以下。


    如圖2-27所示,先找到工程下的build.gradle文件,找到裏面的配置,把裏面的配置改低點,改爲1.2.3或者1.5.0,雖然有些新特性可能用不了,可是足夠咱們用的了。



    ▲圖2-27 修改1

    備註:最新版本已經不是2.0.0-alpha1了,解決方式是通用的。


    錯誤 2


    如圖2-28所示,這個錯誤指的是工程沒法解析對應的函數庫。碰到這種狀況不要懼怕,Android Studio提供瞭解決方案。點擊Install Repository and sync project,而後安裝對應的函數庫便可。



    ▲圖2-28 錯誤2

    備註:圖片只是爲了演示錯誤,新建立工程默認不會加載recycleview-v7這個庫,目前新建立工程會加載。


    圖中'com.android.support:appcompat-v7:XXXX'(這個位置看不懂不要緊,後面會講到)。



    讀者在建立工程時碰到的問題能夠反饋給我。我儘可能幫你解決,同時我也會把問題的解決方式同步到電子書裏。



    2.4 Android Studio界面預覽


    建立完了工程,接下來預覽開發環境的界面,如圖2-29所示。



    ▲圖2-29 界面預覽

    Gradle同步按鈕爲,當咱們修改工程中後綴名爲Gradle的文件時,須要點擊此按鈕才能生效。


    Gradle同步按鈕右側的是工程配置按鈕,對工程進行配置須要點擊它。


    圖中視圖切換按鈕的做用是能夠根據我的喜愛切換到不一樣的視圖。經常使用的視圖爲Project和Android,如圖2-30所示。



    ▲圖2-30 視圖切換按鈕

    2.5 經常使用設置

    點擊菜單File→Setting進入設置界面,能夠根據本身的偏好進行一些設置。若是喜歡系統默認的設置,此節能夠跳過。


    備註:Mac版本的Android Studio看不到此按鈕,可經過點擊頂部菜單Android Studio→Preferences調出來,下面你們自行轉換。


    2.5.1 設置主題


    默認的Android Studio爲灰白色界面,能夠選擇使用炫酷的黑色界面,如圖2-31所示。



    ▲圖2-31 設置主題

    選擇Settings→Appearance→Theme進入界面,勾選Darcula主題便可。


    2.5.2 設置字體和格式


    1.設置系統字體


    如圖2-32所示,若是Android Studio界面中的中文顯示有問題,或者選擇中文目錄顯示有問題,或者想修改菜單欄的字體,就能夠這麼設置:


    Settings→Appearance,勾選Override default fonts by (not recommended),選擇一款支持中文的字體便可。本書使用的是微軟雅黑,效果不錯。



    ▲圖2-32 設置字體

    2.設置編程字體

    如圖2-33所示,此部分會修改編輯器的字體,包含全部的文件顯示的字體。



    ▲圖2-33 設置編程字體

    選擇Settings→Editor→Colors & Fonts→Font。默認系統顯示的Scheme爲Defualt,此處是不能編輯的,須要點擊右側的Save As...,保存一份本身的設置,並在當中設置。以後,在Editor Font中便可設置字體。


    Show only monospaced fonts表示只顯示等寬字體。通常來講,等寬字體在編程中使用較多,且效果較好。


    3.設置字體顏色


    在Settings→Editor→Colors & Fonts中還能夠設置字體的顏色,根據要設置的對象選擇設置,也能夠從網絡上下載字體顏色設置包,導入到系統中。


    4.設置代碼格式


    若是想設置代碼格式化時顯示的樣式,就能夠這麼設置:


    Settings→Code Style。一樣的,Scheme中默認的配置沒法修改,須要建立一份本身的配置。


    2.5.3 設置文件編碼


    不管是我的開發,仍是項目組團隊開發,都須要統一文件編碼。出於字符兼容的問題,建議使用UTF-8。大部分Windows系統默認的字符編碼爲GBK。


    選擇Settings→File Encodings。建議將IDE Encoding、Project Encoding、Properties Fiels都設置成統一的編碼,如圖2-34所示。



    ▲圖2-34 設置文件編碼格式

    2.5.4 設置快捷鍵

    Android Studio的快捷鍵和Eclipse(學習過Java的應該都接觸過)的不相同,可是經過設置就能夠在Android Studio中使用Eclipse的快捷鍵。


    選擇Settings→Keymap。能夠從Keymap中選擇對應IDE的快捷鍵,如圖2-35所示。



    ▲圖2-35 快捷鍵

    不管是否選擇Keymap映射,都須要修改一個快捷鍵,就是代碼提示的快捷鍵。Android Studio中代碼提示的快捷鍵是Ctrl+Space,這個按鍵和切換輸入法衝突。


    選擇Main menu→Code→Completion→Basic,更改成想替換的快捷鍵組合,推薦爲Alt+/,如圖2-36所示。



    ▲圖2-36 修改快捷鍵

    2.5.5 其餘設置

    如圖2-37所示,爲了方便你們開發,推薦你們設置編輯區域和顯示行號。



    ▲圖2-37 其餘設置

    1.設置Android Studio編輯區域

    代碼在編輯區域中部會有一條豎線。這條線是用以提醒程序員,一行的代碼長度最好不要超過這條線。若是不想顯示這條線,能夠這麼設置:


    Settings→Editor→General→Appearance,取消勾選Show right margin (configured in Code Style options)。


    2.顯示行號


    選擇Settings→Editor→General→Appearance,勾選Show line numbers。


    2.6 經常使用快捷鍵


    下面以Windows/Linux電腦爲例講解經常使用快捷鍵。Mac電腦的快捷鍵大部分相似,只須要把Ctrl替換成Cmd,Alt替換成Option。


    默認快捷鍵以下。


    Ctrl + D:複製光標所在行代碼到下一行。


    Ctrl + Y:刪除光標所在位置那行代碼(Mac電腦爲Cmd+Delelte)。


    Alt+Enter:導入包,快速修復。


    Ctrl+/:當行註釋,反註釋再按一次便可。


    Ctrl+Shift+/:模塊註釋,反註釋再按一次便可。


    Alt+Insert:能夠生成構造器/Getter/Setter等。


    Ctrl+Alt+V:生成方法返回值。


    Ctrl+E:查看最近打開過的文件。


    Eclipse映射後區別不大。


    Ctrl+Shift+↓:複製光標所在行代碼到下一行。


    Ctrl+D:刪除光標所在位置那行代碼。


    Alt+Enter:導入包,快速修復。


    Ctrl+/:當行註釋,反註釋再按一次便可。


    Ctrl+Shift+/:模塊註釋,反註釋再按一次便可。


    Alt+Insert:能夠生成構造器/Getter/Setter等。


    Ctrl+Alt+V:生成方法返回值。


    Ctrl+E:查看最近打開過的文件。


    2.7 Android工程目錄


    熟悉了Android Studio開發環境,接下來介紹你們比較關心的問題。進行Android開發時,固然須要熟悉Android工程目錄結構,主要須要瞭解Android目錄結構和Gradle文件的內容結構。



     


    本節對應的視頻地址爲:v.youku.com/v_show/id_X…



    2.7.1 工程目錄介紹


    如圖2-38所示,首先須要切換成Project視圖,而後整個項目結構就在咱們眼前了。


    咱們重點介紹使用的Android項目結構如圖2-39所示。



    ▲圖2-38 項目結構


    ▲圖2-39 項目結構,框中的常用

    注意,res目錄下的全部文件不容許出現大寫字母,也不容許使用Java關鍵字命名。


    2.7.2 Gradle使用詳解


    Android Studio經過Gradle腳本進行打包運行程序。


    Gradle 全部文件結構


    Android工程目錄下有一個build.gradle,運行的module裏也有一個build.gradle。


    settings.gradle


    settings.gradle表示當前運行的程序是app,若是還須要在工程中添加其餘運行的程序,就須要在settings.gradle中進行配置。


    build.gradle


    build.gradle中設置了Gradle的版本、依賴的倉庫。


    2.7.3 app/build.gradle


    app/build.gradle文件在開發過程當中可能修改的次數比較多。下面咱們重點介紹。


    apply plugin: 'com.android.application'//應用Android應用插件
    android {
    compileSdkVersion 25 //編譯SDK(Software Development Kit)的版本
    buildToolsVersion "25.0.2" //構建工具的版本

    defaultConfig {
    applicationId "com.baidu.myapplication" //應用的惟一標示
    minSdkVersion 15 //最低兼容的版本
    targetSdkVersion 25 //目標版本兼容的版本
    versionCode 1 //版本號,數字版本號
    versionName "1.0" //字符串版本號
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    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:25.1.0'
    }
    複製代碼

    下面分別進行解釋。


    1.Android腳本


    這個不能刪。它的做用就是讓其他的腳本代碼都有用。


    apply plugin: 'com.android.application'//應用Android應用插件複製代碼

    2.Android配置


    代表編譯的版本和編譯工具的版本。必須保證SDK(開發工具包,立刻就會介紹到)有這個版本。


    compileSdkVersion 25  //編譯SDK(Software Development Kit)的版本
    buildToolsVersion "25.0.2" //構建工具的版本複製代碼

    3.運行程序的配置


    其包括applicationId(程序的包名,也就是程序的惟一標示)、兼容的最低版本(minSdkVersion)和目標版本(targetSdkVersion)。這些都在建立項目的時候指定了,能夠在這個位置修改。還有當前程序的版本號(versionCode)和版本名字(versionName),其中版本號是整數,隨着項目的升級遞增,版本名字是字符串,並無太嚴格的限制。


    defaultConfig {
    applicationId "com.baidu.myapplication" //應用的惟一標示
    minSdkVersion 15 //最低兼容的版本
    targetSdkVersion 25 //目標版本兼容的版本
    versionCode 1 //版本號,數字版本號
    versionName "1.0" //字符串版本號
    }複製代碼

    4.buildTypes


    程序在發佈的時候能夠混淆代碼,能夠保護代碼,不會被其餘人輕易破解。


    buildTypes {  //構建類型
    release {
    minifyEnabled false //是否混淆代碼 false不混淆
    // 混淆代碼配置文件
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }複製代碼

    其實,buildType主要的目的是能夠根據不一樣的版本設置不一樣的參數。進行不一樣的配置。開發過程分爲調試階段和正式發佈階段,能夠經過buildType在不一樣的階段設置不一樣的參數,以下面的代碼:


    debug {
    buildConfigField "String", "API_URL", "\"test.baidu.com\""
    buildConfigField "boolean", "LOG_CALLS", "true"
    resValue "string", "str_name", "Example DEBUG"
    }
    release {
    buildConfigField "String", "API_URL", "\"www.baidu.com\""
    buildConfigField "boolean", "LOG_HTTP_CALLS", "false"
    resValue "string", "str_name", "Example"
    ...
    }複製代碼

    調試階段就是debug,正式發佈就是release,裏面分別設置了不一樣的3個參數。這3個參數能夠經過代碼調用:


    String url=BuildConfig.API_URL;
    boolean log_calls=BuildConfig.LOG_CALLS;
    int stringid=R.string.str_name;複製代碼

    5.dependencies


    這個用來指明項目中依賴的函數庫,目前項目建立默認須要依賴appcompat-v7(版本不必定和書中一致),裏面提供了不少API,既可使用高版本的特效,也能兼容低版本,何樂而不爲呢?


    dependencies { // 指明項目中依賴的第三方函數庫
    // 依賴程序中jar包
    compile fileTree(dir: 'libs', include: ['複製代碼.jar'])
    // 單元測試相關的
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.1.0'
    }複製代碼

    2.8 SDK目錄介紹



     


    本節對應的視頻地址爲:v.youku.com/v_show/id_X…



    1.什麼是 SDK


    首先須要明白一個概念,SDK全稱是Software Development Kit,翻譯過來就是軟件開發工具包。它是開發程序必不可少的。在安裝Android Studio後必需要安裝SDK,不然不能建立項目。若是用官方默認的安裝包,默認是安裝SDK的。


    2 . SDK 目錄(見圖 2 - 40 )


    注:Mac系統默認在~/Libary/Android目錄下。



    ▲圖2-40 SDK目錄

    (1)add-ons中保存着附加庫,好比GoogleMaps。


    (2)build-tools編譯。


    (3)docs中是Android SDKAPI參考文檔,全部的API均可以在這裏查到。


    (4)extras:額外的jar包之類的。


    (5)platforms是每一個平臺的SDK真正的文件,裏面會根據APILevel劃分SDK版本。


    (6)platform-tools保存着一些通用工具,好比adb、aapt、aidl、dx等文件。這裏和platforms目錄中的tools文件夾有些重複,主要是從Android 2.3開始這些工具被劃分爲通用了。


    (7)samples是Android SDK自帶的默認示例工程,強烈推薦初學者學習裏面的apidemos。


    (8)source是Android系統源碼。


    (9)tools做爲SDK根目錄下的tools文件夾,包含了重要的工具,好比ddms用於啓動Android調試工具,還有logcat、屏幕截圖和文件管理器;draw9patch是繪製Android平臺的可縮放png圖片的工具;sqlite3能夠在PC上操做SQLite數據庫;monkeyrunner是一個不錯的壓力測試應用,模擬用戶隨機按鍵;mksdcard是模擬器SD映像的建立工具;emulator是Android SDK模擬器主程序,不過從Android 1.5開始,須要輸入合適的參數才能啓動模擬器;traceview做爲Android平臺上重要的調試工具。


    (10)system-images:鏡像。


    (11)AVD Manager:模擬器管理者。


    (12)SDK Manager:SDK管理者,能夠用它下載升級SDK。


    2.9 調試程序


    瞭解了這麼多,其實你們最關心的是如何把程序部署到手機中。這樣你們就能夠拿本身寫的手機程序跟朋友炫耀了。



    怎麼部署到手機呢



    點擊就能夠把程序部署到手機中。


    前提是,須要有個Android手機,固然沒有手機也沒有關係,Google工程師提供了模擬器,能夠模擬Android手機環境。


    2.9.1 建立模擬器


    參照圖2-41和圖2-42,首先點擊模擬器按鈕,而後點擊建立模擬器,選擇對應的設備。



    ▲圖2-41 步驟1建立模擬器


    ▲圖2-42 步驟2建立模擬器

    使用默認的設備,點擊Next,選擇一個系統映像,如圖2-43所示。



    ▲圖2-43 步驟3選擇鏡像

    點擊Next,進入覈對配置界面,如圖2-44所示。



    ▲圖2-44 步驟4確認配置

    最後點擊Finish就建立成功了,如圖2-45所示。



    ▲圖2-45 建立成功

    點擊啓動按鈕就能夠啓動模擬器。


    目前新版Android模擬器速度很是快,可是比較耗費內存。


    2.9.2 鏈接真實手機


    固然,也能夠鏈接本身的真實手機。


    如圖2-46所示,進入手機設置中,進入開發者選項,勾選USB調試。而後用數據線鏈接上電腦,就能夠調試了。固然,第一次部署須要用手機受權容許該電腦調試。



    ▲圖2-46 打開USB調試

    備註:Android 4.4以上的手機系統默認是不顯示開發者選項這個按鈕的,默認須要連續點關於手機頁中的版本號。


    2.9.3 Genymotion模擬器


    若是你們不想用真實的手機,也不想用Android原生的模擬器,推薦你們用Genymotion模擬器(見圖2-47),這個模擬器的速度很驚人。不過,Genymotion安裝起來稍微麻煩,須要先安裝Oracle VM VirtualBox,而後安裝Genymotion,最後註冊Genymotion帳號,再下載模擬器。註冊和下載都須要訪問境外服務器,很是不穩定。本書提早給你們整理好了Windows版的Oracle VM VirtualBox和Genymotion的安裝包,也給你們提供了部分虛擬機,你們能夠直接雙擊虛擬機導入Oracle VM VirtualBox中。



    ▲圖2-47 Genymotion模擬器

    連接:pan.baidu.com/s/1i4fXwCt,…


    備註:Win10操做系統中,Oracle VM VirtualBox和Genymotion須要用Win8/Win7兼容性,以管理員身份運行。


    2.10 程序啓動分析


    瞭解瞭如何調式程序,接下來分析項目是如何運行起來的。首先來看app/src/main/AndroidManifest.xml
    這個文件:


    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="schemas.android.com/apk/res/and…"
    package="com.baidu.myapplication" >

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity android:name=".MainActivity"
    >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>

    </manifest>複製代碼

    AndroidManifest.xml文件俗稱清單文件,能夠簡單理解爲是當前應用的配置文件。該文件能夠配置應用權限和四大組件(包括Activity、廣播接受者、服務、內容提供者),Activity必須在清單文件中註冊,不然不能直接顯示。


    其中,intent-filter裏的兩行代碼很是重要,<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />表示MainActivity是這個項目的主Activity,在手機上點擊應用圖標,首先啓動的就是MainActivity。


    接下來再看MainActivity:


    package com.baidu.myapplication;

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;

    public class MainActivity extends AppCompatActivity {
    // 首先啓動onCreate方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //設置界面顯示的佈局
    setContentView(R.layout.activity_main);
    }
    }
    複製代碼


    首先能夠看到,MainActivity繼承自AppCompatActivity,這是一個特殊的Activity,也具有Activity的特性。


    當程序運行的時候,首先會根據上面清單文件的配置運行MainActivity,而後就會調用MainActivity的onCreate方法,這個方法率先調用。而MainActivity在這個方法中加載了佈局setContentView(R.layout.activity_main);


    這時候可能有人會問:R.layou.activity_main是什麼?R又是在哪來的?


    其中,R表明res目錄,layout就是res目錄下的佈局目錄。R是自動生成的類,用來鏈接res目錄下的資源和Java代碼,這個位置至關於引入了activity_main這個佈局文件。若是res目錄下有錯誤,R就不會生成了,代碼中就會有錯誤。


    以前給你們介紹過,凡是在應用中看獲得的東西,都是放在Activity中,而這個佈局就是當前界面程序顯示的樣子:


    再來看佈局文件src/main/res/layout/activity_main.xml:


    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
    xmlns:android="schemas.android.com/apk/res/and…"
    xmlns:tools="schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.baidu.myapplication.MainActivity">
    <!--TextView用來顯示文本的控件-->
    <TextView
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    />
    </RelativeLayout>複製代碼

    如圖2-48所示,點擊Design按鈕能夠查看預覽界面,或者直接運行到手機也能夠看到同樣的界面。其中,TextView 就是最簡單的一個控件,用來顯示文本,上面代碼中的 android:text 屬性就是控制顯示的內容。



    ▲圖2-48 預覽界面

    簡單總結下:項目啓動首先須要讀取清單文件AndroidManifest.xml,而後找到主Activity,調用主Activity的onCreate方法,加載佈局顯示到手機中,大功告成。


    2.11 日誌和註釋


    開發任何程序時,有兩點是萬萬不能少的:一是註釋,二是日誌的輸出。學習Android開發以前首先須要掌握這兩點。下面來介紹註釋的使用和日誌的輸出。


    本節對應的視頻地址爲:v.youku.com/v_show/id_X…


    2.11.1 註釋


    大部分Android程序都採用Java代碼,代碼中的註釋和Java代碼是同樣的。XML文件註釋採用<!---->進行註釋,以下:


    <!--XML文件註釋-->

    // java 行註釋

    /
    註釋
    /

    /*
    文檔註釋
    /複製代碼

    好的註釋會讓你維護程序事半功倍。你們在學習的階段必定養成先寫註釋再寫代碼的習慣。


    2.11.2 日誌


    註釋寫法相對比較簡單,重點看一下在Android中如何輸日誌。首先須要明白日誌是給程序員本身看的,使用軟件的人通常是看不到的。


    如圖2-49所示,能夠藉助Android Monitor工具查看日誌,默認快捷鍵:Alt+6。



    ▲圖2-49 日誌

    從上面的圖片能夠看到,日誌具備不一樣的日誌級別,包括:Verbose、Debug、Info、Warn、Error、Assert。以上級別依次升高。每條日誌都有進程信息,默認一個應用程序佔一個進程。每條日誌都有標籤。


    磨刀不誤砍柴工,學習開發前首先須要瞭解如何輸出日誌。


    Android中的日誌工具類是Log(android.util.Log),這個類中提供了以下方法來供咱們打印日誌。


    (1)Log.v()對應級別Verbose。


    (2)Log.d()對應級別Debug。


    (3)Log.i()對應級別Info。


    (4)Log.w()對應級別Warn。


    (5)Log.e()對應級別Error。


    (6)Log.wtf()對應級別Assert。


    固然System.out.println方法也能夠輸出日誌,這個方法在Java中使用的比較多,在Android中並沒有明顯優點,由於它不能控制日誌的標籤,查詢起來比較麻煩。


    直接在onCreate方法中演示這幾個方法,Log.XXX()中第一個參數就是日誌的標籤,推薦你們指定當前的類名,方便查找:


    Log.v("MainActivity","v");
    Log.d("MainActivity","d");
    Log.i("MainActivity","info");
    Log.w("MainActivity","w");
    Log.e("MainActivity","e");
    Log.wtf("MainActivity","wtf");
    System.out.print("out");複製代碼

    寫完代碼,運行查看結果,如圖2-50所示。



    ▲圖2-50 輸出結果

    你們發現Syste.out.println的標籤是System.out,級別是INFO級別。


    注意,Android Studio每一個級別默認的不是這個顏色,默認的顏色太難看,不方便區別級別,咱們須要本身改一下。


    2.11.3 設置Android Studio日誌顯示顏色


    如圖2-51和圖2-52所示,選擇File→Settings或按Ctrl + Alt +S組合鍵進入設置界面,找到Editor→Colors &Fonts→Android Logcat或在上面的搜索框中輸入Logcat點中Verbose、Info、Debug等選項,而後在後面將Use Inberited attributes去掉勾選,再將Foreground前的複選框選上,就能夠雙擊後面的框去選擇顏色了,選擇Apply→OK。



    ▲圖2-51 修改日誌顏色

    對應的顏色值:




    • VERBOSE BBBBBB

    • DEBUG 0070BB

    • INFO 48BB31

    • WARN BBBB23

    • ERROR FF0006

    • ASSERT 8F0005


    在實際開發的過程當中,咱們會常常看到程序輸出的日誌,其中不少並非咱們主動輸出的。這些日誌就像咱們去醫院化驗的結果單子同樣。若是發現警告或者以上級別的日誌,就須要留意了,你的程序有潛在風險或者嚴重問題,須要根據日誌內容進行修復。



    ▲圖2-52 修改日誌顏色

    2.11.4 實際開發中控制日誌

    輸出日誌很簡單,怎麼控制日誌的輸出就值得研究下了,日誌是用來調試程序的,當程序發佈後日志就變得一無可取了。因此輸出日誌的原則就是:


    程序開發階段容許輸出日誌,發佈後不容許打印日誌。


    如何去控制呢?若是在上線前手動刪除全部日誌,這個工做量就很大了。


    方法 1 :建立 LogUtils


    能夠建立一個LogUtils工具類:


    public class LogUtils {
    public static final boolean DEBUG=true;

    public static void i(String tag,String msg){
    if(DEBUG) {
    Log.i(tag, msg);
    }
    }
    }
    複製代碼


    在程序中都是用Logutils的方法輸出日誌:


    LogUtils.i("MainActivity","LogUtils");複製代碼

    這樣就能夠經過LogUtils中DEBUG變量去控制日誌的輸出,當程序調試時,把這個值改成true;程序發佈了,就把這個值改爲false。這樣就能夠實現咱們一開始的需求。


    然而,這樣的話,咱們還須要在發佈前夕手動地去改代碼,能不能在發佈前不改代碼呢?這時候就要藉助Gradle了,Android Studio集成了Gradle,這一點很是棒。能夠參考以前介紹的內容,打開app/build.gradle這個文件,作一個配置:


    buildTypes {
    debug{ // 開發階段
    buildConfigField "boolean", "LOG_CALLS", "true" // 定義了boolean變量 true
    }
    release { // 發佈了
    buildConfigField "boolean", "LOG_CALLS", "false"
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }複製代碼

    能夠在buildType中配置一些全局變量,能夠是String類型,也能夠是boolean,這裏用到的就是LOG_CALLS這一個boolean類型變量,注意,debug{ ...}指的是程序開發階段,release{ }指的是程序發佈階段。咱們在開發和發佈階段分別定義了對應不一樣值的LOG_CALLS,接下來就能夠在LogUtils中使用這個全局變量了:


    public class LogUtils {
    public static final boolean DEBUG=BuildConfig.LOG_CALLS;

    public static void i(String tag,String msg){
    if(DEBUG) {
    Log.i(tag, msg);
    }
    }
    }
    複製代碼



    其中,BuildConfig.LOG_CALLS就是咱們在上面定義的變量,這個變量在開發階段是true,發佈階段自動就變成了false。咱們這樣就幹了一個一勞永逸的事了。


    方法 2 :混淆日誌類


    上面的方法仍是比較麻煩,其實還有更簡單的方法。咱們能夠藉助代碼混淆。簡單地說,代碼混淆就是把代碼進行混淆加密,讓盜取代碼的人難以讀懂。


    首先開啓代碼混淆:


    release {
    minifyEnabled true //是否混淆代碼 false不混淆
    // 混淆代碼配置文件
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    複製代碼


    混淆的腳本默認是在工程目錄下的proguard-rules.pro文件中添加的,添加以下代碼:


    -assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
    }
    複製代碼


    assumenosideeffects的官方解釋就是,混淆器將刪除這些方法(若是在程序中使用這些方法的返回值,則不會刪除。通常日誌不關心返回值)。這樣,程序在發佈階段將會混淆代碼,混淆的過程當中就把日誌輸出的方法給去掉了,程序就永遠不會輸出日誌了。


    2.11.5 Logger的使用


    可使用Logger這個開源框架輸出日誌,如圖2-53所示。首先看看這個日誌控制器輸出的界面,其排版工整,調理清晰。



    ▲圖2-53 使用Logger輸出日誌

    具體怎麼使用呢?你們能夠經過上面的Logger鏈接進入github主頁。固然這也是本書第一次介紹開源框架的使用。下面給新手簡單介紹下。


    直接訪問app/build.gradle文件,額外添加logger的依賴:


    dependencies { // 指明項目中依賴的第三方函數庫
    ...
    compile '<strong>com.orhanobut:logger:1.15</strong>'
    }複製代碼

    而後單擊界面上的同步按鈕,如圖2-54所示,Android Studio就會自動下載logger1.15這個第三方的庫,很是方便。



    ▲圖2-54 同步按鈕

    使用方法:


    Logger輸出的日誌方式要多一些,能夠輸出JSON和XML格式。後面介紹講網絡傳輸的時候會對這種格式進行具體介紹。


    // 默認標籤
    Logger.d("hello");
    Logger.e("hello");
    Logger.w("hello");
    Logger.v("hello");
    Logger.wtf("hello");
    //指定標籤
    Logger.t("mytag").d("hello");複製代碼

    總結


    這一章,咱們把學習Andorid開發的前期準備工做都作完了,包括環境搭建、熟悉環境、建立項目的步驟、項目結構、調試程序、日誌輸出等。這一章相對麻煩,不少內容大部分人都不會想作第二遍了,固然也沒有必要作第二遍,好比環境搭建(我寫這一節的時候也很痛苦)。不過仍是有一些重點須要掌握的,好比日誌的輸出。


    本章代碼下載地址:github.com/yll2wcf/boo…


    若是代碼導入困難,讀者可參考個人博客中的文章www.jianshu.com/p/0e73ad2ea…


    歡迎關注微信公衆帳號——於連林,搜索關鍵字:likeDev。




    合抱之木,生於毫末;九層之臺,起於累土;千里之行,始於足下。

    相關文章
    相關標籤/搜索