Photo by Denny Müller on Unsplash
因為疫情的關係,最近空出一些時間,想學如何撰寫手機 APP 應用程式,之前在實作使用手機藍芽與傳感器之間的控制時,大概瞭解如何使用 App Inventor 的圖形介面設計手機應用程式,覺得 App Inventor 的圖像操作方式比較像是讓初學程式者能夠更快上手,對於我有點程式基礎,覺得有點簡單,於是打算每天利用幾個小時來學習 Android 程式開發的介面,順便將多年前學習的 Java 程式熟悉一下,考量我的電腦是 Wintel 機種,如要撰寫 iOS 程式,還要去找一台 Macbook 才會比較方便,礙於設備關係,就先從 Android 著手。之後的文章會陸續整理撰寫 Android 程式的重要資料,我們先從 Android 的歷史開始。
[Android 歷史簡介]
Android 一個以 Linux 為基礎的半開放原始碼操作系统,主要用於移动設備,最初由安迪·鲁宾(Andy Rubin)開發製作,主要是支援手機,於2005年8月被 Google 收購。2007年11月,Google 與 84 家硬體製造商、軟體開發商及電信營運商成立開放手機聯盟來共同研發 Android,任何廠商都不須經過 Google 和開放手持裝置聯盟的授權隨意使用 Android 作業系統;但是製造商不能在未授權下在產品上使用 Google 的標誌和應用程式。
Android是一個全身綠色的機器人,半圓形的頭部,有兩支天線和空白的點作為眼睛。它的頭部與身體之間有空白的區域,相似於一枚有平底的雞蛋,兩側各有兩個圓角矩形,作為它的雙臂。歷年來 Android 換過幾次商標 Logo,使用年份與圖標如下:
來源:1000Logos
Android作業系統有預發行的內部版本,分別為原子小金剛(Astro)與機器人班亭(Bender,電視動畫《飛出個未來》的角色)。從2009年5月開始,Android的版本代號改以甜點來命名,且每個代號間的字首以英文字母序接續排列:Cupcake(紙杯蛋糕)、Donut(甜甜圈)、Eclair(閃電泡芙)....Oreo(奧利奧)、Pie(派)等命名方式,直到 2019年8月23日,Google宣布從Android Q開始不再以甜品命名,且直接稱Android Q為Android 10。
為了加速 Android 平台軟體的開發,Google 於 2008 年九月首先釋出第一版的 SDK 1.0 Release 1 供開發人員使用,之後,則規律的釋出新版本的 SDK。
若要瞭解更多 Android 的歷史,可參考 維基百科 Android 的介紹。相關發展版本的歷史也可以參考 Android 版本列表。
[Android作業系統架構]
Android 是執行於 Linux kernel 之上,但並不是 GNU/Linux。因為在一般GNU/Linux裏支援的功能,Android大都沒有支援,包括 Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。有一些由C所寫的中介軟體、函式庫和應用程式介面,以及運行包含 Java 相容庫的應用框架上應用程式。Linux 核心的開發則繼續獨立於 Android 的其他原始碼項目。Android 的作業系統架構如下圖:Android 的作業系統架構圖(來源:Wiki)
- 系統應用層(System Apps)
- 應用框架層(Java API Framework)
- 系統運行庫層(Native C/C++ Libraries And Runtimes)
- Android Runtime:
- 預先(AOT)和即時(JIT)編譯。
- 優化的垃圾回收(GC)。
- 在Android 9(API級別28)及更高版本的系統中,支援將應用軟體中的 DEX( Dalvik Executable)格式文件轉換。
- 硬體抽象層(Hardware Abstraction Layer, HAL)
- Linux內核層(Linux Kernel)及電源管理(Power Management)
[Android 應用程式組件]
Android 的應用程式由以下四種組件(Component)組成,這些組件可互相搭配來構建應用程式所有功能。- Activity 活動
- Service服務
- Broadcast Receiver 廣播接收器
- Content Provider 內容提供器
上述的四種組件可搭配組合成 Android 應用程式,這些組件的項目與應用會在 AndroidManifest.xml 檔案中描述,稍後的筆記中會瞭解這個檔案的用途。除此,還有其他額外的組件(Component)用來建構上述提到的應用以及邏輯等,這些組件包括以下各項:
組件 | 說明 |
---|---|
Fragments | 用來呈現在 Activity 活動中用戶界面的一部分。 |
Views | 在螢幕上繪製的 UI 元件,如按鈕,列表表單等。 |
Layouts | 控制 View 的格式、外觀以及層次結構等。 |
Intents | 將各組件間用訊息連接起來。 |
Resources | 外部元素,例如字符串,常數和可繪製圖片。 |
Manifest | 應用程式的設定檔。 |
[參考資料]
- 維基百科:Android
- 維基百科:Android 版本列表
- Developers:開發者指南
- tutorialspoint:Android - Application Components
張貼留言