本文摘自人民郵電出版社異步社區《愛上Android》
html
工欲善其事,必先利其器。選擇一個好的IDE能夠大幅提升開發效率,節省下的時間能夠去多學習新知識,多陪陪家人。接下來就手把手領着你們把開發環境搭建起來。java
以前開發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
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。
緣由一:Android Studio是谷歌開發的,專門爲Android開發量身定作的編輯器。
緣由二:Android Studio最核心的功能就是智能代碼編輯器,它能幫助咱們很是高效地完成代碼補全、重構和代碼分析。作過開發的讀者都知道,沒有代碼提示,估計 90%以上的人就不會寫代碼了。
緣由三:Android Studio的速度更快、更加智能,集成了版本控制系統、代碼分析工具、UI編輯器、Gradle構建工具、Android Monitor、模擬器、各類模板和示例等,還有各類強大的插件支持。
緣由四:谷歌宣佈將在2015年年末前中止對Eclipse Android開發工具的一切支持,包括ADT插件、Ant構建系統、DDMS、Traceview與其餘性能和監控工具。
有了上面這四大緣由,你還有什麼理由不用Android Studio?
如今的電腦配置愈來愈高,圖 2-1 所列的配置要求基本上很容易就能達到了。若是你的電腦配置不知足這些要求,就需換臺電腦了。
▲圖2-1 須要知足的基本系統要求
官方下載地址:
官網:developer.android.com/sdk/index.h…
中文官網:developer.android.google.cn/studio/inde…
官網打開樣式如圖2-2所示,這裏提供了三大平臺的安裝包,選擇對應的平臺進行下載。
▲圖2-2 Android Studio
採用官方連接,能夠直接下載所有安裝包,裏面主要包含Android Studio安裝包和Android開發SDK(開發工具包)。固然也能夠分開下載。
首先須要下載JDK,安裝完成JDK,配置JDK環境變量。下面以Windows平臺爲例進行演示。
右鍵單擊個人電腦→屬性→環境變量,配置JAVA_HOME環境變量。
參考如圖2-3和圖2-4所示的內容。
▲圖2-3 配置環境變量
安裝過程當中的簡單操做在這就不進行截圖講解了,由於只須要點擊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
若是一些選項不能點擊,說明JDK或者Android SDK目錄指向有問題,請看下面的設置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系統
安裝好了開發環境,終於能夠建立Android項目了。這但是你成爲高手的第一步。接下來介紹建立項目的步驟和出現錯誤時的解決方法。
前期部分章節贈送教學視頻。視頻主要爲了新手更方便熟悉基本操做。
![]()
2.3節、2.4節、2.5節、2.6節對應的視頻地址爲:v.youku.com/v_show/id_X… MzA0MA==.html(建議改爲超清模式觀看)。
步驟 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 項目生成中
第一次建立項目的時候可能會發生些錯誤。錯誤的緣由最多的就是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-29所示。
▲圖2-29 界面預覽
Gradle同步按鈕爲,當咱們修改工程中後綴名爲Gradle的文件時,須要點擊此按鈕才能生效。
Gradle同步按鈕右側的是工程配置按鈕,對工程進行配置須要點擊它。
圖中視圖切換按鈕的做用是能夠根據我的喜愛切換到不一樣的視圖。經常使用的視圖爲Project和Android,如圖2-30所示。
▲圖2-30 視圖切換按鈕
點擊菜單File→Setting進入設置界面,能夠根據本身的偏好進行一些設置。若是喜歡系統默認的設置,此節能夠跳過。
備註:Mac版本的Android Studio看不到此按鈕,可經過點擊頂部菜單Android Studio→Preferences調出來,下面你們自行轉換。
默認的Android Studio爲灰白色界面,能夠選擇使用炫酷的黑色界面,如圖2-31所示。
▲圖2-31 設置主題
選擇Settings→Appearance→Theme進入界面,勾選Darcula主題便可。
如圖2-32所示,若是Android Studio界面中的中文顯示有問題,或者選擇中文目錄顯示有問題,或者想修改菜單欄的字體,就能夠這麼設置:
Settings→Appearance,勾選Override default fonts by (not recommended),選擇一款支持中文的字體便可。本書使用的是微軟雅黑,效果不錯。
▲圖2-32 設置字體
如圖2-33所示,此部分會修改編輯器的字體,包含全部的文件顯示的字體。
▲圖2-33 設置編程字體
選擇Settings→Editor→Colors & Fonts→Font。默認系統顯示的Scheme爲Defualt,此處是不能編輯的,須要點擊右側的Save As...,保存一份本身的設置,並在當中設置。以後,在Editor Font中便可設置字體。
Show only monospaced fonts表示只顯示等寬字體。通常來講,等寬字體在編程中使用較多,且效果較好。
在Settings→Editor→Colors & Fonts中還能夠設置字體的顏色,根據要設置的對象選擇設置,也能夠從網絡上下載字體顏色設置包,導入到系統中。
若是想設置代碼格式化時顯示的樣式,就能夠這麼設置:
Settings→Code Style。一樣的,Scheme中默認的配置沒法修改,須要建立一份本身的配置。
不管是我的開發,仍是項目組團隊開發,都須要統一文件編碼。出於字符兼容的問題,建議使用UTF-8。大部分Windows系統默認的字符編碼爲GBK。
選擇Settings→File Encodings。建議將IDE Encoding、Project Encoding、Properties Fiels都設置成統一的編碼,如圖2-34所示。
▲圖2-34 設置文件編碼格式
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-37所示,爲了方便你們開發,推薦你們設置編輯區域和顯示行號。
▲圖2-37 其餘設置
代碼在編輯區域中部會有一條豎線。這條線是用以提醒程序員,一行的代碼長度最好不要超過這條線。若是不想顯示這條線,能夠這麼設置:
Settings→Editor→General→Appearance,取消勾選Show right margin (configured in Code Style options)。
選擇Settings→Editor→General→Appearance,勾選Show line numbers。
下面以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:查看最近打開過的文件。
熟悉了Android Studio開發環境,接下來介紹你們比較關心的問題。進行Android開發時,固然須要熟悉Android工程目錄結構,主要須要瞭解Android目錄結構和Gradle文件的內容結構。
![]()
本節對應的視頻地址爲:v.youku.com/v_show/id_X…
如圖2-38所示,首先須要切換成Project視圖,而後整個項目結構就在咱們眼前了。
咱們重點介紹使用的Android項目結構如圖2-39所示。
▲圖2-38 項目結構
▲圖2-39 項目結構,框中的常用
注意,res目錄下的全部文件不容許出現大寫字母,也不容許使用Java關鍵字命名。
Android Studio經過Gradle腳本進行打包運行程序。
Gradle 全部文件結構
Android工程目錄下有一個build.gradle,運行的module裏也有一個build.gradle。
settings.gradle
settings.gradle表示當前運行的程序是app,若是還須要在工程中添加其餘運行的程序,就須要在settings.gradle中進行配置。
build.gradle
build.gradle中設置了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'
}複製代碼
下面分別進行解釋。
這個不能刪。它的做用就是讓其他的腳本代碼都有用。
apply plugin: 'com.android.application'//應用Android應用插件複製代碼
代表編譯的版本和編譯工具的版本。必須保證SDK(開發工具包,立刻就會介紹到)有這個版本。
compileSdkVersion 25 //編譯SDK(Software Development Kit)的版本
buildToolsVersion "25.0.2" //構建工具的版本複製代碼
其包括applicationId(程序的包名,也就是程序的惟一標示)、兼容的最低版本(minSdkVersion)和目標版本(targetSdkVersion)。這些都在建立項目的時候指定了,能夠在這個位置修改。還有當前程序的版本號(versionCode)和版本名字(versionName),其中版本號是整數,隨着項目的升級遞增,版本名字是字符串,並無太嚴格的限制。
defaultConfig {
applicationId "com.baidu.myapplication" //應用的惟一標示
minSdkVersion 15 //最低兼容的版本
targetSdkVersion 25 //目標版本兼容的版本
versionCode 1 //版本號,數字版本號
versionName "1.0" //字符串版本號
}複製代碼
程序在發佈的時候能夠混淆代碼,能夠保護代碼,不會被其餘人輕易破解。
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;複製代碼
這個用來指明項目中依賴的函數庫,目前項目建立默認須要依賴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'
}複製代碼
![]()
本節對應的視頻地址爲: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。
瞭解了這麼多,其實你們最關心的是如何把程序部署到手機中。這樣你們就能夠拿本身寫的手機程序跟朋友炫耀了。
怎麼部署到手機呢
點擊就能夠把程序部署到手機中。
前提是,須要有個Android手機,固然沒有手機也沒有關係,Google工程師提供了模擬器,能夠模擬Android手機環境。
參照圖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-46所示,進入手機設置中,進入開發者選項,勾選USB調試。而後用數據線鏈接上電腦,就能夠調試了。固然,第一次部署須要用手機受權容許該電腦調試。
▲圖2-46 打開USB調試
備註:Android 4.4以上的手機系統默認是不顯示開發者選項這個按鈕的,默認須要連續點關於手機頁中的版本號。
若是你們不想用真實的手機,也不想用Android原生的模擬器,推薦你們用Genymotion模擬器(見圖2-47),這個模擬器的速度很驚人。不過,Genymotion安裝起來稍微麻煩,須要先安裝Oracle VM VirtualBox,而後安裝Genymotion,最後註冊Genymotion帳號,再下載模擬器。註冊和下載都須要訪問境外服務器,很是不穩定。本書提早給你們整理好了Windows版的Oracle VM VirtualBox和Genymotion的安裝包,也給你們提供了部分虛擬機,你們能夠直接雙擊虛擬機導入Oracle VM VirtualBox中。
▲圖2-47 Genymotion模擬器
備註:Win10操做系統中,Oracle VM VirtualBox和Genymotion須要用Win8/Win7兼容性,以管理員身份運行。
瞭解瞭如何調式程序,接下來分析項目是如何運行起來的。首先來看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方法,加載佈局顯示到手機中,大功告成。
開發任何程序時,有兩點是萬萬不能少的:一是註釋,二是日誌的輸出。學習Android開發以前首先須要掌握這兩點。下面來介紹註釋的使用和日誌的輸出。
本節對應的視頻地址爲:v.youku.com/v_show/id_X…
大部分Android程序都採用Java代碼,代碼中的註釋和Java代碼是同樣的。XML文件註釋採用<!---->進行註釋,以下:
<!--XML文件註釋-->
// java 行註釋
/
註釋 /
/*
文檔註釋 /複製代碼
好的註釋會讓你維護程序事半功倍。你們在學習的階段必定養成先寫註釋再寫代碼的習慣。
註釋寫法相對比較簡單,重點看一下在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-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 修改日誌顏色
對應的顏色值:
在實際開發的過程當中,咱們會常常看到程序輸出的日誌,其中不少並非咱們主動輸出的。這些日誌就像咱們去醫院化驗的結果單子同樣。若是發現警告或者以上級別的日誌,就須要留意了,你的程序有潛在風險或者嚴重問題,須要根據日誌內容進行修復。
▲圖2-52 修改日誌顏色
輸出日誌很簡單,怎麼控制日誌的輸出就值得研究下了,日誌是用來調試程序的,當程序發佈後日志就變得一無可取了。因此輸出日誌的原則就是:
程序開發階段容許輸出日誌,發佈後不容許打印日誌。
如何去控制呢?若是在上線前手動刪除全部日誌,這個工做量就很大了。
方法 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的官方解釋就是,混淆器將刪除這些方法(若是在程序中使用這些方法的返回值,則不會刪除。通常日誌不關心返回值)。這樣,程序在發佈階段將會混淆代碼,混淆的過程當中就把日誌輸出的方法給去掉了,程序就永遠不會輸出日誌了。
可使用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。
合抱之木,生於毫末;九層之臺,起於累土;千里之行,始於足下。