Android – 開發架構基本認識

應用程式開發架構

一個最基本的Android專案架構來看, 通常如下圖所示:

  • app : 專案原始碼開發
    • manifests: 專案架構清單
    • java: 原始碼
    • res: 相關資源
  • Gradle Scripts : 專案建置工具腳本相關檔案

通常一個Android專案開發的架構, 大多數會先在app下之java進行原始碼開發任務. 假設在一開始的Package設定為tw.brad.myproj01, 則展開java之後如下圖所示:

將會有三個類似名稱的資料夾, 其中一個後面沒有括號, 其下包含了一開始所建立的MainActivity. 該資料夾將會是後續主要開發的原始碼專案目錄.

而整個Android Studio的開發者操作介面, 預設也將開啟MainActivity.java進行編輯任務.

專案開發中, 將隨時會將目前的開發程式安裝到實體裝置或是模擬器, 則按下執行功能:

則將會出現選擇裝置的對話框, 如果已經正常連接實體Android裝置, 則將會出現該選項:

上圖中的HUAWEI MHA-L29則為筆者所安裝連結的實體華為手機, 而Nexus 5X API 26則為模擬器, 當選擇了Nexus 5X API 26之後:

對於Windows 的作業系統的開發者而言, 模擬器的建立, 首次將會透過對話框來 Create Device, 但是在幾次的教學經驗中, 提供以下幾點注意事項:

  • 開發環境請不要以Virtual Box類似的虛擬主機上運行
    • Android Studio 的功能很多, 勢必會需要一個效能較佳的硬體環境
    • 模擬器運行起來會花更久的時間, 真的很久
  • GenyMontion 是一個還不錯的模擬器, 但是要付費
  • 模擬器真的不需要花太多時間去搞定他, cp 值真的不高
    • 因為開發的 app 最終是要放在實機上執行
    • 不如花時間去連接實機開發

 

而同時, 開啟Android Studio開發者介面下方列中的 Logcat:

則將會向上展開監控畫面:

通常用來檢視目前的app的實際執行狀況紀錄, 以供開發者除錯使用的工具.

 

App 主要元件


Android由4個主要元件組成,每個元件都是系統連接應用程式的橋梁,但並不是每個元件都需要去操作,有些定義是取決於其他元件,分別是

  • Activity(活動): Activity是相當重要的元件,代表的就是一個使用者的介面,使用者透過此介面與應用程式互動,通常會是一般app專案開發最主要的開發元件
  • Service(服務): 服務是在背景執行的元件,用於長期的作業或遠端處理程序,並不會提供使用者介面,可以透過Activity啟動並在背景作業,可同時與Activity並存,例如:在播放音樂的同時操作其他應用程式,或者是在Play商店下載應用程式同時瀏覽其他Activity。當中的播放音樂和下載應用程式都可以在背景處理,就是所謂的服務
  • Content Provider(內容提供者): 內容提供者可管理以分享的應用程式資料,儲存在永久儲存空間上,由於各個應用程式階在處理自己的程序,如果內容權限允許,可讓其他應用程式查詢或修改自身資料
  • Broadcast Receiver(廣播接收器): 廣播接收器是來接收Android系統、其他應用程式等訊息,例如:手機螢幕已關閉,電池電量不足等。雖然沒辦法在Activity顯示,但是可以在狀態列通知廣播事件

 

Intent(意圖)


Intent的功能在於啟動Activity、服務與廣播接收器,並在執行階段將元件間連結,也可以用在傳送新任務給其他元件

Intent可以處理Activity和Service定義要執行的動作,並指定執行目標資料的URI,例如:使用者挑選聯絡人資料,Intent會將資料和所選的聯絡人的URI回傳給使用者

Intent也能處理Broadcast Receiver定義廣播通知的內容,例如:電量不足時,在通知列發出”電量不足”的已知字串

 

 

架構清單檔案 AndroidManifest.xml


AndroidManifest.xml是一個在所有Android專案都一定要有的檔案,是一個應用程式的說明檔,用來向Android系統顯示應用程式基本資訊,這麼一來應用程式才可以被執行,此檔案通常會在開啟新專案時自動產生在 app →  manifests → AndroidManifest.xml ,開發者不用自己去創建,並且在一開始就會把基本架構設定好,而 AndroidManifest.xml 可以執行下列動作

  • 為應用程式的Java封裝命名,此命名是唯一識別
  • 描述應用程式組成的元件,透過類別發佈,讓Android可以理解元件為何和在哪啟動
  • 決定應用程式主導的程序
  • 宣告應用程式有哪些權限,可否存取受保護的API
  • 宣告其他項目的權限,才能與應用程式的元件互動
  • 列出 Instrumentation 類別來分析應用程式的執行
  • 宣告應用程式要求的最低API
  • 列出應用程式連結的資料庫

 

AndroidManifest.xml的架構

AndroidManifest.xml 根據不同用途使用不同的標籤來進行應用程式的宣告或屬性設定,所有標籤都包含開頭與結尾,例如<application>結尾處會有</application>,以 ” /標籤 ” 表示這個標籤結束,如果要設定屬性或宣告只要在標籤頭和標籤尾之間處理就好,例如:

<標籤名稱  設定屬性="屬性值" ...>
...
</標籤名稱>

但是如果在標籤中間沒有其他標籤的話,可以直接在開頭標籤的結尾使用 “ /> ”就可以讓這個標籤自我了斷,例如

<標籤名稱  設定屬性="屬性值" .../>

說完標籤後就來說說 AndroidManifest.xml 內包含的東西吧

  • 身為一個XML檔第一行一定要有<?xml version=“1.0” encoding=“utf-8”?>,這行是用來說明這是一個XML文件
  • <manifest>和<application>兩個標籤是必要的元素,而且只能出現一次
  • 除了<manifest>某些屬性外,其他的屬性都是用 android: 為開頭,例如android:label=“@string/app_name”
  • <manifest>是此XML檔的根元素
  • package屬性是每個應用程式都要定義的名稱,如果此APP要上架到Google Play就必須修改成為開發者的網域, 反過來之後的字串為首, 之後以小數點進行分類識別, 例如一為開發者的網域為 brad.tw, 則可能是 tw.brad.android.apps.travelapp, 後面銜接的字串為android.apps.travelapp是開發者自行定義的分類項目.
  • <application>是本專案的基本設定,可以在裡面設定icon、名稱、主題、樣式…等
  • <activity>標籤可以宣告應用程式畫面的類別
  • <intent-filter>為意圖篩選,用來協助應用程式間交互溝通

 

 

 

本站資源一切隨緣,
不用註冊, 不看廣告
如果對您有所助益,
歡迎功德隨喜, 金額隨意,
請點擊以下...(感謝您)

功德箱/打賞箱

%d bloggers like this: