從0系統學Android--1.3建立你的第一個 Android 專案

sydMobile發表於2019-07-21

從0系統學Android--1.3建立你的第一個 Android 專案

1.3 建立你的第一個 Android 專案

環境搭建完成後,我們就可以寫下我們的第一個專案了。

1.3.1 建立 HelloWorld 專案

在 Android Studio 的歡迎頁面點選 Start a new Android Studio project 就會自動為我們建立一個專案。(首次開啟專案,可能構建時間很長,需要下載很多東西,和你的網速有關係)

1.3.2 啟動模擬器

我們還可以通過 Android Studio 來建立一個模擬器,供我們執行程式。不過建議使用真機測試。

1.3.3 執行程式

手機和 Android Studio 連線上後,我們就往手機上面執行程式了。

1.3.4 分析你的第一個 Android 程式

  1. gradle 和 .idea

    這兩個目錄下放置的都是 Android Studio 自動生成的一些檔案,我們無需關心。也不要去手動編輯

  2. app

    專案中的程式碼、資源等內容幾乎都放在這個目錄下。

  3. build

    無需關心,編譯產生的檔案

  4. gradle

    這個目錄下包含了 gradle wrapper 的配置檔案,使用 gradle wrapper 的方式不需要提前將 gradle 下載好,而是會根據本地的快取情況決定是否需要聯網下載。

  5. .gitignore

    版本控制有關

  6. build.gradle

    全域性的 gradle 構建指令碼。

  7. gradle.properties

    全域性的 gradle 配置檔案。在這裡配置的屬性會影響到專案中所有的 gradle 編譯指令碼。

  8. gradlew 和 gradlew.bat

    用來在命令介面中執行 gradle 命令的,其中 gradlew 是在 Linux 或者 Mac 系統中使用的,gradlew.bat 是在 Windows 系統中使用

  9. HelloWorld.iml

    是所有的 IntelliJ IDEA 專案都會自動生成一個檔案,用於標識這是一個 IntelliJ IDEA 專案。

  10. local.properties

    指定本機中的 SDK 路徑

  11. setting.gradle

    指定專案中所引入的模組。

除了 APP 目錄以外,大多的檔案和目錄都是自動生成的,不需要我們去修改。app 目錄才是我們關注的重點。

APP 目錄下進行分析

  1. build

    編譯時自動生成的檔案

  2. libs

    使用了第三方 jar ,存放目錄

  3. androidTest

    編寫 Android Test 測試用例的,可以對專案進行一些自動化測試

  4. Java

    放置程式碼的地方

  5. res

    存放資源,這裡面又有很多目錄,後面詳解介紹

  6. AndroidMainfest.xml

    Android 專案的配置檔案。我們所使用的四大元件都需要在這裡註冊,許可權的申請也在這裡,經常使用

  7. test

    編寫 Unit Test 測試用例,是對專案進行自動化測試的另一種方式

  8. .gitignore

    版本控制(app 模組內),用於裝置版本控制的時候忽略的內容

  9. app.iml

    IntelliJ IEDA 專案自動生成的檔案

  10. build.gradle

    app 模組的 gradle 構建指令碼。專案構建相關的配置

  11. 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 中直接編寫的。而是在佈局檔案中編寫介面。

1.3.5 詳解專案中的資源

res 目錄介紹

  • drawable

    用來存放圖片

  • mipmap

    存放應用圖示

  • values

    string、color、樣式等配置

  • layout

    存放佈局

有這麼多的 mipmap 開頭的目錄是為了讓程式更好的相容各種解析度的手機。drawable 資料夾也應該是相同的道理,我們應該自己建立多個目錄:drawable-hdpi drawable-xhdpi drawable-xxhdpi drawable-xxxhdpi 圖片最好分別制定多個,分別放到不同的目錄下,程式執行的時候會自動到對應的目錄查詢。

只有一套圖的時候,把圖片放到 drawable-xxhdpi 資料夾

1.3.6 詳解 build.gradle 檔案

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 這個是用於宣告測試用例庫的。

從0系統學Android--1.3建立你的第一個 Android 專案

相關文章