Android開發(fā)教程之初識Android App
一、認識Android操作系統(tǒng)
Android最早由安迪•羅賓(Andy Rubin)創(chuàng)辦,2007年被Google公司收購,Google公司憑借Android操作系統(tǒng)在智能手機上取得了巨大的成功。
1、Android操作系統(tǒng)的特點
Android操作系統(tǒng)是一個多用戶的Linux系統(tǒng),每一個應用程序都是一個獨立的用戶。系統(tǒng)默認為每一個應用程序分配一個唯一的Linux用戶ID(這個ID只能被系統(tǒng)使用,并且對于應用程序來說,這個ID是未知的)。系統(tǒng)為一個應用程序的所有文件設(shè)置了權(quán)限,所以,只有分配給這個應用程序的用戶ID才可以訪問它們。
每一個進程有它主機的虛擬機(VM),所以一個應用程序的代碼會獨立于其它的應用程序運行。
默認情況下,每一個應用程序在它自己的Linux進程中運行。Android會在一個應用程序的任何一個組件需要被調(diào)用的時候啟動這個進程。然后,當沒有任何組件被調(diào)用或者系統(tǒng)需要為其它應用程序回收內(nèi)存的時候,就關(guān)閉這個進程。
通過這種方式,Android系統(tǒng)實現(xiàn)了最少的特權(quán)原則。就是說,每一個應用程序,默認都只能調(diào)用它所需要的工作組件。這就創(chuàng)造了這樣一種非常安全的環(huán)境,在這個環(huán)境中,一個應用程序不能訪問沒有被授予其權(quán)限的系統(tǒng)部分。
盡管如此,也有很多途徑可以讓一個應用程序和其它的應用程序共享數(shù)據(jù),也可以讓一個應用程序去調(diào)用系統(tǒng)服務:
-----為兩個應用程序分配同一個Linux用戶ID是可行的,這樣它們就能訪問對方的文件。為了節(jié)約系統(tǒng)資源,擁有相同用戶ID的-------應用程序也可以被運行于相同的Linux進程 并且共享VM(必須用相同的證書簽名)。應用程序可以通過請求權(quán)限來訪問設(shè)備數(shù)據(jù),例如聯(lián)系人、SMS信息、可插拔存儲(SD卡)、相機、藍牙、……等等。所有的應用程序權(quán)限必須在安裝的時候由用戶授予。
2、Android程序在系統(tǒng)中的存在方式
開發(fā)在Android操作系統(tǒng)上運行應用程序時,Android SDK工具負責編譯代碼,以及將任意數(shù)據(jù)并連同相關(guān)資源一塊打包進一個Android包內(nèi),它實際上是一個以.apk為后綴的壓縮文件。一個.apk文件中的所有代碼就是一個Android應用程序。
在Android設(shè)備上安裝應用程序就是安裝.apk文件。
一旦安裝成功,該Android程序就擁有了自己獨立的運行沙盒(沙盒是在受限的安全環(huán)境中運行應用程序的一種做法,這種做法是要限制授予應用程序的代碼訪問權(quán)限)。
二、理解Android SDK和API版本
每個Android版本都有一個唯一的整數(shù)標識,稱為API Level。由于用戶使用的程序總是早于最新發(fā)布的API版本,所以實際的Android應用程序必須確保能在多版本API的環(huán)境中都能工作。
1、Android SDK和項目配置
Android SDK為我們提供了API鏈接庫以及用于建立、測試與調(diào)試android應用的開發(fā)工具的集合。指定Android API版本配置前,要確保已經(jīng)用Android SDK Manager安裝了對應版本的Android SDK。
每個Android應用程序必須正確配置所使用的API級別,有三種:
Target Framework – 使用哪種框架創(chuàng)建應用程序(編譯用)。
Minimum Android Version – 指定Android應用程序可使用的最低版本(運行用)。
Target Android Version – 指定Android應用程序試圖使用的版本(運行用)。
也可以將三種API設(shè)置為相同的值:
將“Target framework”更改為某個API版本,即可擁有該版本的所有API功能。如果希望兼容早期的Android版本,可修改“Minimum Android to target”選項:
上圖中的選項表明開發(fā)的Android應用程序可以安裝在Android 4.4.2到Android 6.0之間所有版本的手機上,即API 19~API 23。但是,雖然可以安裝在這些平臺上,可并不能保證應用程序都能在這些平臺上正常運行。例如,將程序安裝到Android 4.4.2(API 19)平臺上,可代碼中卻調(diào)用了比API 19更高版本的API,但是卻沒有對應版本的編譯器支撐,那么該程序肯定無法在Android 4.4.2平臺上正常運行。因此,這種情況下,必須顯式包含運行時檢查。例如:
if (Android.OS.Build.Version.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) { builder.SetCategory(Notification.CategoryEmail); }
(注:Android.OS.BuildVersionCodes.Lollipop是指Android 5.0)
2、Android API版本對照表
下表列出了各種Android版本及其對應的信息:
從表中可以看出,Android的版本發(fā)布非常頻繁,有時一年就發(fā)布幾個版本。如何確保在如此多的版本中仍然能讓應用程序可靠地運行?這就是API Level的作用。
3、API級別和自定義庫
當創(chuàng)建Android Libraries項目時,應該讓開發(fā)的庫函數(shù)能應用于各種版本的API,因此一般不需要設(shè)置最低級別的API和最高級別的API,而是應遵循以下的最佳做法:
引用某個版本的API時,要確保應用程序運行的API版本不低于所引用的版本。為其他安卓應用程序設(shè)計自定義的庫函數(shù)時,要為該應用程序設(shè)置需要的最低API級別。
總之,要確保開發(fā)的庫函數(shù)使用盡可能少的API,以便讓所設(shè)計的庫適用范圍更廣。
三、在Debug模式下調(diào)試應用程序
1、在模擬器中調(diào)試Android應用程序
由于模擬器啟動較慢,所以無論是C#開發(fā)還是Java開發(fā),最好的辦法都是先將模擬器啟動起來,然后再調(diào)試。
一般使用VS2015在Debug模式下用模擬器調(diào)試。由于調(diào)試模式下默認包含了可適用于多種CPU型號的調(diào)試信息,所以Debug模式下生成的.apk文件比較大。
2、在真機上調(diào)試Android應用程序
也可以直接在真機上調(diào)試應用程序,只需要通過USB將手機連接到電腦上即可,此時在調(diào)試選項中會自動出現(xiàn)手機型號。
四、部署應用程序到真機
Debug模式下調(diào)試完成后,先改為Release模式,然后將其發(fā)布到真機上(真機不再包含調(diào)試信息,此時生成的.apk文件會小很多)。
當然,也可以通過壓縮擴展庫進一步減少.apk文件的大小。比如第3章百度應用程序中調(diào)試環(huán)境下.apk文件較大,將.jar包分開后就會顯著減少.apk文件的大小。
要將你的程序發(fā)布到手機上,需要先查看你手機上的Android操作系統(tǒng)版本,確保你編寫的應用程序使用的編譯器版本和你手機操作系統(tǒng)的版本一致。
下面以手機的Android操作系統(tǒng)版本為4.4.4為例,說明將你用C#編寫的應用程序發(fā)布到手機上運行的具體實現(xiàn)步驟。
發(fā)布前,先將項目屬性改為API Level 19(與手機的4.4.4版本對應),如下圖所示:
然后選擇下面介紹的兩種辦法之一發(fā)布即可。
1、第1種辦法
先將【Debug】模式改為【Release】模式(這一步很重要,否則無法發(fā)布),然后選擇主菜單的【工具】à【Android】à【Publish Android Application】,如下圖所示:
在彈出的發(fā)布窗口中,選擇【Create New KeyStore】,輸入【Password】,單擊【Next】,然后輸入別名(Alias)、口令(Password)、你編寫的程序有效年數(shù)(Validity years)、你的姓名(First and Last Name)等信息:
單擊【Next】,輸入發(fā)布的目標文件夾,應用程序文件名,然后單擊【Create】,它就會自動在目標文件夾下創(chuàng)建PhonewordApp-Aligened.apk文件。
注意:要確保手機的【應用程序設(shè)置】勾選了“允許未知來源的應用程序”。
將發(fā)布生成的PhonewordApp-Aligened.apk文件拷到你的手機上,然后雙擊安裝、運行。
用這種方式發(fā)布的應用程序也可以在Android應用商店中銷售。
2、第2種辦法
先將【Debug】模式改為【Release】模式(這一步很重要,否則無法發(fā)布)。
鼠標右擊項目名,然后選擇【Export Android Package】,如下圖所示:
此時它就會自動在Release文件夾下生成多個.apk文件。
根據(jù)你的手機類型,將生成的某個匹配的PhonewordApp-Signed.apk文件(在項目的Release文件夾下)拷到你的手機上,然后雙擊安裝、運行。
用這種方式發(fā)布的應用程序只能直接在真機上運行,無法在Android應用商店中銷售。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android中利用App實現(xiàn)消息推送機制的代碼
- Android App調(diào)試內(nèi)存泄露之Cursor篇
- Android界面設(shè)計(APP設(shè)計趨勢 左側(cè)隱藏菜單右邊顯示content)
- Android筆記之:App應用之啟動界面SplashActivity的使用
- Android獲取手機型號/系統(tǒng)版本號/App版本號等信息實例講解
- Android獲取應用程序名稱(ApplicationName)示例
- Android 避免APP啟動閃黑屏的解決辦法(Theme和Style)
- 怎么發(fā)布打包并發(fā)布自己的Android應用(APP)
- 通過Html網(wǎng)頁調(diào)用本地安卓(android)app程序代碼
- 一看就懂的Android APP開發(fā)入門教程
相關(guān)文章
Android Studio連接SQLite數(shù)據(jù)庫的登錄注冊實現(xiàn)
這篇文章主要介紹了Android Studio連接SQLite數(shù)據(jù)庫的登錄注冊實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06使用androidx BiometricPrompt實現(xiàn)指紋驗證功能
這篇文章主要介紹了使用androidx BiometricPrompt實現(xiàn)指紋驗證功能,對android指紋驗證相關(guān)知識感興趣的朋友跟隨小編一起看看吧2021-07-07android實現(xiàn)掃描網(wǎng)頁二維碼進行網(wǎng)頁登錄功能
這篇文章主要介紹了android掃描網(wǎng)頁二維碼進行網(wǎng)頁登錄效果,掃描成功之后跳轉(zhuǎn)進入主頁,具體實現(xiàn)代碼大家參考下本文2017-12-12OpenGL Shader實現(xiàn)簡單轉(zhuǎn)場效果詳解
轉(zhuǎn)場效果常出現(xiàn)再視頻剪輯當中,用于銜接兩段視頻片段切換的過渡效果。本文將介紹如何利用OpenGL Shader實現(xiàn)簡單的轉(zhuǎn)場效果,需要的小伙伴可以參考一下2022-02-02