環境搭建完成後,咱們就能夠寫下咱們的第一個項目了。java
在 Android Studio 的歡迎頁面點擊 Start a new Android Studio project
就會自動爲咱們建立一個項目。(首次開啓項目,可能構建時間很長,須要下載不少東西,和你的網速有關係)android
咱們還能夠經過 Android Studio 來建立一個模擬器,供咱們運行程序。不過建議使用真機測試。git
手機和 Android Studio 鏈接上後,咱們就往手機上面運行程序了。緩存
gradle 和 .idea閉包
這兩個目錄下放置的都是 Android Studio 自動生成的一些文件,咱們無需關心。也不要去手動編輯app
appide
項目中的代碼、資源等內容幾乎都放在這個目錄下。工具
build佈局
無需關心,編譯產生的文件測試
gradle
這個目錄下包含了 gradle wrapper 的配置文件,使用 gradle wrapper 的方式不須要提早將 gradle 下載好,而是會根據本地的緩存狀況決定是否須要聯網下載。
.gitignore
版本控制有關
build.gradle
全局的 gradle 構建腳本。
gradle.properties
全局的 gradle 配置文件。在這裏配置的屬性會影響到項目中全部的 gradle 編譯腳本。
gradlew 和 gradlew.bat
用來在命令界面中執行 gradle 命令的,其中 gradlew 是在 Linux 或者 Mac 系統中使用的,gradlew.bat 是在 Windows 系統中使用
HelloWorld.iml
是全部的 IntelliJ IDEA 項目都會自動生成一個文件,用於標識這是一個 IntelliJ IDEA 項目。
local.properties
指定本機中的 SDK 路徑
setting.gradle
指定項目中所引入的模塊。
除了 APP 目錄之外,大多的文件和目錄都是自動生成的,不須要咱們去修改。app 目錄纔是咱們關注的重點。
APP 目錄下進行分析
build
編譯時自動生成的文件
libs
使用了第三方 jar ,存放目錄
androidTest
編寫 Android Test 測試用例的,能夠對項目進行一些自動化測試
Java
放置代碼的地方
res
存放資源,這裏面又有不少目錄,後面詳解介紹
AndroidMainfest.xml
Android 項目的配置文件。咱們所使用的四大組件都須要在這裏註冊,權限的申請也在這裏,常用
test
編寫 Unit Test 測試用例,是對項目進行自動化測試的另外一種方式
.gitignore
版本控制(app 模塊內),用於設備版本控制的時候忽略的內容
app.iml
IntelliJ IEDA 項目自動生成的文件
build.gradle
app 模塊的 gradle 構建腳本。項目構建相關的配置
proguard-rules.pro
混淆規則。做用:防止咱們編譯的 apk 包被別人反編譯後能夠輕鬆查看。
介紹完這些目錄,是否是感受到很混亂呢,感受都不知道在說什麼,不要緊,這些東西后面慢慢接觸就清楚了。
介紹 HelloWorld 項目是如何啓動的
首先查看 清單文件 AndroidManifest.xml
<activity android:name = ".HelloWorldActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN"/>
<category android:name = "android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
複製代碼
這段代碼就表示對 HelloWorldActiviy
進行註冊,若是不註冊的話是會報錯的。
其中
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
複製代碼
表示這個項目的主 Activity 就是這個,啓動程序的時候會首先打開這個 Activity。
Activity 就是咱們所看到的頁面,下面看一下代碼是怎麼寫的
public class HelloWorldActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.hello_world_layout);
}
}
複製代碼
HelloWorldActiviyt 是繼承 APPCompatActivity 的,這是一種向下兼容的 Activity,這樣可使用 Activity 在不一樣系統版本中增長的新特性和功能能夠在比較舊的系統上仍然使用(兼容到 Android 2.1)。
Android 程序設計講究邏輯和視圖的分離。界面是不在 Activity 中直接編寫的。而是在佈局文件中編寫界面。
res 目錄介紹
drawable
用來存放圖片
mipmap
存放應用圖標
values
string、color、樣式等配置
layout
存放佈局
有這麼多的 mipmap 開頭的目錄是爲了讓程序更好的兼容各類分辨率的手機。drawable 文件夾也應該是相同的道理,咱們應該本身建立多個目錄:drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
圖片最好分別制定多個,分別放到不一樣的目錄下,程序運行的時候會自動到對應的目錄查找。
只有一套圖的時候,把圖片放到 drawable-xxhdpi 文件夾
Android Studio 是基於 Gradle 來構建項目的,Gradle 是一種很是先進的構建工具。它基於 Groovy 的領域特定語言(DSL)。擯棄了傳統的基於 xml (如 Ant、Maven)的各類繁瑣的配置。
注意:在新的版本中 compile 已經被 implementation 代替了,因爲是在《第一行代碼》參考下,因此下面仍是 compile
buildscript{
repositories{
jcenter()
}
dependencies{
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
allprojects{
repositories{
jcenter()
}
}
複製代碼
jcenter 是一個代碼託管庫,不少的開源代碼都放在這個庫裏面,聲明瞭這個配置,咱們就能夠輕鬆的引用庫裏面的開源代碼了。
dependencies 閉包中使用 classpath 聲明瞭一個 Gradle 插件,之所聲明這個插件是由於,Gradle 並非專門爲 Android 項目開發的,Java 、C++ 等不少項目一樣可使用 Gradle 來構建,若是咱們想要用 Gradle 來構建 Android 項目就須要咱們使用 Gradle 針對 Android 的插件工具了。
一般狀況下咱們不須要修改這裏面的內容,除非咱們想要添加一些全局的項目構建配置。
內層 APP 目錄下的 build.gradle
apply plugin: `com.android.application`
android{
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig{
applicationId "com.example.helloworld"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes{
release{
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}
dependecies{
compile fileTree(dir:'libs',include:['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
}
複製代碼
第一行應用了一個插件,通常有兩種值能夠選擇:com.android.application
表示這是一個應用程序模塊,能夠直接運行。com.android.library
表示這是一個庫模塊,只能依附於別的應用程序運行。
下面是一個 android 大閉包,配置項目構建的各類屬性。
compileSdkVersion 指定編譯版本,這裏指定的 24 表示使用 Android 7.0 系統的 SDK 編譯。
buildToolsVersion 用於指定項目構建工具的版本
而後 android 包中又嵌套了一個 defaultConfig 閉包,對項目中的更多細節進行配置。
applicationId 用於指定項目的包名
minSdkVersion 指定項目最低兼容的 Android 版本
targetSdkVersion 表示你在該目標版本上已經作過充分的測試,系統會啓用這個版本的新的特性和功能。
versionCode 指定項目的版本號
versionName 指定項目的版本名
下面就是 buildType 閉包,這裏面的配置主要是生成安裝文件相關的配置,一般只有兩個子閉包,一個是 debug
,一個是release
。debug 閉包用於配置測試包。release 用於配置正式包。debug 包能夠忽略不寫。
查看 release
包中的內容:minifyEnabled
用於指定是否對項目的代碼進行混淆,true 表示是,false 表示否。proguardFiles
用於指定混淆使用的規則文件,這裏指定了兩個文件,一個是 proguard-android.txt ,這個在 Android SDK 下面,是全部項目通用的混淆規則,第二個是 proguard-rules.pro 在當前根目錄下,裏面編寫當前項目的混淆規則,經過 Android Studio 直接運行的都是測試安裝文件。
dependencies閉包
這裏面主要說明當前項目的依賴關係。Android Studio 項目一共有三種依賴關係:本地依賴、庫依賴、遠程依賴
本地依賴: 就是對本地 jar 包或者目錄添加依賴關係。
庫依賴: 對項目中的庫模塊進行依賴
遠程依賴: 對遠程倉庫上面的開源項目進行依賴。
compile fileTree 就是對一個本地依賴聲明。它表示將 libs 目錄下的全部 .jar 後綴的文件所有添加到項目的構建路徑中。
下面的 compile 'com.android.****' 就依賴的遠程倉庫。添加上這句後,Gradle 在構建項目的時候會首先檢查一下本地是否有這個庫的緩存,沒有就去對應的倉庫下載。
庫依賴的基本格式是:compile project 加上要依賴的庫名稱。例若有個庫模塊叫:helper,則:
compile project(':helper')
複製代碼
testCompile 這個是用於聲明測試用例庫的。