android系統的架構
『壹』 安卓框架有哪些
問題一:Android常用的框架有哪些 Android開發中常用的框架:
1、Afinal
Afinal是一個android的ioc,orm框架,內置了四大模塊功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通過finalActivity,可以通過註解的方式進行綁定ui和事件。通過finalBitmap,可以方便的載入bitmap圖片,而無需考慮oom等問題。通過finalDB模塊,一行代碼就可以對android的sqlite資料庫進行增刪改查。通過FinalHttp模塊,以ajax形式請求數據。
2、 xUtils
xUtils:可以說是Afinal的升級版。
xUtils 包含了很多實用的android工具。
xUtils 支持大文件上傳,更全面的請求協議支持(10種謂詞),擁有更加靈活的ORM,更多的事件註解支持且不受混淆影響。
xUitls 最低兼容android 2.2 (api level8)。
3、LoonAndroid
這是一個純實現功能的框架,它的目標是節省代碼量,降低耦合,讓代碼層次看起來更清晰。
4、 KJFrameForAndroid
是一個android的orm 和 ioc 框架。同時封裝了android中的Bitmap與Http操作的框架,使其更加簡單易用;
KJFrameForAndroid的設計思想是通過封裝Android原生SDK中復雜的復雜操作而達到簡化Android應用級開發,最終實現快速而又安全的開發APP。我們提倡用最少的代碼,完成最多的操作,用最高的效率,完成最復雜的功能。
項目地址:github/kymjs/KJFrameForAndroid
5、 dhroid
dhroid 是基於android 平台, 極速開發框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展.使你更快,更好的開發商業級別應用。
6、 SmartAndroid
SmartAndroid是一套給 Android開發者使用的應用程序開發框架和工具包。提供了一套豐富的標准庫以及簡單的介面和邏輯結構,其目的是使開發人員更快速地進行項目開發。使用 SmartAndroid可以減少代碼的編寫量,並將你的精力投入到項目的創造性開發上。
7、 andBase
ndbase是為Android開發者量身打造的一款開源類庫產品
8、 AndroidAnnotations
完全的註解,使開發起來更加便利,程序員寫的代碼也更少。
9、 volley
Volley是Android平台上的網路通信庫,能使網路通信更快,更簡單,更健壯非同步載入網路圖片、網路數據,Google官方推薦。
問題二:安卓軟體開發框架有哪些 安卓軟體開發需要一定的java基礎,當然少不了Java環境的搭建,還有安卓SDK的環境搭建,接著你下個eclipse裝個ADT插件,或者直接用Android studio就可以開發安卓應用了,具體的建議你找個開發教程
問題三:android有哪些實用框架?分別用來做什麼? Android 目前還沒有那樣成熟的框架可以使用……
只能說有一些開源項目較好地解決了部分方面的問題,例如:
(1)EventBus:解決了模塊之間消息傳遞解耦合的問題
(2)picasso:解決非同步載入圖片和緩存圖片的問題
(3)dagger:一個依賴注入工具庫
……
其他開源項目大多數解決了部分通用 UI 控制項的問題,不過我看你的意思是架構級別的框架,而不是什麼 UI 控制項這類的小東西。
問題四:什麼是android的框架開發 上圖中的第二層Framework
問題五:常用的android開發框架有哪些 android bootstrap有試用過,但其實不用框架都能完成你想要的功能的話,真心沒必要用。
問題六:Android的系統架構包括哪些部分 Android的系統架構和其操作系統一樣,採用了分層的架構。Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和linux內核層。
一、應用程序
Android會同一系列核心應用程序包一起發布,該應用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等。所有的應用程序都是使用JAVA語言編寫的。
二、應用程序框架
開發人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。
三、系統運行庫
Android 包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們通過 Android 應用程序框架為開發者提供服務。
四、Linux內核層
Android內核是基於Linux 內核的修改的內核版本,它提供了用於支持Android平台的設備驅動。
問題七:android快速開發框架有哪些 ThinkAndroid免費源、簡易、遵循Apache二源協議發布Android發框架其發宗旨簡單、快速進行Android應用程序發包含Android mvc、簡易sqlite orm、ioc模塊、封裝Android clitent模塊,具快速構建文件緩存功能需考慮緩存文件格式都非輕松實現緩存基於文件緩存模塊實現圖片緩存功能android載入圖片候oom問題載入圖片錯位問題都輕易解決包括手機發經應用實用工具類志管理配置文件管理android載器模塊中國絡切換檢測等等工具 目前ThinkAndroid主要模塊: MVC模塊:實現視圖與模型離 ioc模塊:androidioc模塊完全註解式進行UI綁定、res資源讀取、及象初始化 資料庫模塊:androidorm框架使用線程池sqlite進行操作 模塊:通client進行封裝數據請求支持非同步及同步式載入 緩存模塊:通簡單配置及設計實現緩存緩存隨意配置 圖片緩存模塊:imageview載入圖片候需考慮圖片載入程現oomandroid容器快速滑候現圖片錯位等現象 配置器模塊:簡易實現配配置操作目前配置文件支持Preference、Properties配置進行存取 志列印模塊:較快輕易實現志列印支持志列印擴展目前支持sdcard寫入本列印、及控制台列印 載器模塊:簡單實現線程載、台載、斷點續傳、載進行控制、始、暫停、刪除等等 中國絡狀態檢測模塊:中國絡狀態改變中國絡狀態進行檢
問題八:主流android開發框架有哪些 android開發框架github上有非常非常多,各種都是開源的,例如側滑菜單,ImageLoading等等。
問題九:Android 有哪些著名的開源框架呢? 什麼應用才對應什麼所謂框架。你寫個游戲用J2EE的框架試試。或者你寫個搜索引擎用游戲引擎試試。沒有哪個框架解決所有問題,如果那樣,搞計算機也太簡單了,框架拿來,隨便改改就是一個軟體。還是學點設計模式這些基本的有用。
問題十:Android軟體框架結構自可分為哪些層? 開發一個程序,android的系統框架是層層相扣,不能分開的。
應用程序層:
這個層主要指的就是用java語言編寫的運行在虛擬機上的程序,Google在最開始時就 在android系統中捆綁了一些核心的應用(核心應用的編寫必須使用應用層序框架層的API框架),例如你android手機中SMS發送短消息的程序,通訊錄等等。
應用程序框架層:
指的就是開發時所需要的API框架,開發人員是在遵守該框架的原則上,調用他們的,開發自己所需要的程序。
系統運行庫層:
用於支持應用框架層的各個組件的。就是說當開發人員使用android應用框架層時,android系統會通過一些C/C++庫來支持對我們使用的各個組件,使其能更好地為開發者服務。
linux核心層:
android的核心系統服務如安全性、內存管理、進程管理、網路協議棧和驅動模型等都依賴於Linux2.6內核,Linux內核同時也作為硬體和軟體棧之間的抽象層。
因此,你開發的程序是運行在應用程序層,開發中寫代碼調用的包,是基於應用框架層,而在應用框架中的各個組件是需要系統運行庫的支持的,例如,你要登陸查看的信息就必須訪問到SQLite資料庫,SQLite就位於系統運行庫,再有,你登入要輸入信息,肯定需要鍵盤驅動的支持,而各種驅動是依賴Linux內核的。
『貳』 android開發的系統架構
Android以Java為編程語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類(class)負責創建視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結,達到復數程序同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。
View等同於J2ME的Displayable,程序人員可以通過 View 類與「XML layout」檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於ViewGroup 是各種layout 的基礎抽象類(abstract class),ViewGroup之內還可以有ViewGroup。View的構造函數不需要再Activity中調用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關,兩者之間通過Listener 結合在一起,每一個View都可以注冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.OnClickListener。另外還有Image等同於J2ME的BitMap。 操作系統與應用程序的溝通橋梁,並用分為兩層:函數層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。
Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當,但相較於Linux Cairo, skia 功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,目前Skia 也是Google Chrome 的圖形引擎。
Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可通過ContentResolver類(Column)取得共用資料庫。
Android的中間層多以Java 實現,並且採用特殊的Dalvik虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種「暫存器型態」(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。
Dalvik虛擬機可以有多個實例(instance), 每個Android應用程序都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程序時可達到優化。Dalvik虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的文件。 Android 的 HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 kernel independent 的概念,也讓 Android framework 的開發能在不考量驅動程序實現的前提下進行發展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL「提供」操作函數(operations),並由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函數。HAL 里包含了許多的 stub(代理人)。Runtime 只要說明「類型」,即 mole ID,就可以取得操作函數。 Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Managemeat),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
『叄』 android 五大應用開發框架是什麼
android應用開發框架是 Application Framework,其系統架構由5部分組成,分別是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。
1、Linux Kernel (Linux內核)
Android基於Linux 2.6提供核心系統服務,例如:安全、內存管理、進程管理、網路 堆棧、驅動模型。Linux Kernel也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。
2、Android Runtime (運行庫)
Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。
Dalvik虛擬機設計成,在一個設備可以高效地運行多個虛擬機。Dalvik虛擬機可執行文件格式是.dex,dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。 大多數虛擬機包括JVM都是基於棧的,而Dalvik虛擬機則是基於寄存器的。
3、Libraries (程序庫)
Android包含一個C/C++庫的集合,供Android系統的各個組件使用。這些功能通過Android的應用程序框架(application framework)暴露給開發者。
4、Application Framework (應用框架層)
通過提供開放的開發平台,Android使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬體優勢、訪問位置信息、運行後台服務、設置鬧鍾、向狀態欄添加通知等等,很多很多。 開發者可以完全使用核心應用程序所使用的框架APIs。
應用程序的體系結構旨在簡化組件的重用,任何應用程序都能發布他的功能且任何其他應用程序可以使用這些功能(需要服從框架執行的安全限制)。這一機制允許用戶替換組件。
5、Applications(應用層)
Android裝配一個核心應用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯系人和其他設置。所有應用程序都是用Java編程語言寫的。Android本身是一套軟體堆迭(Software Stack),或稱為「軟體迭層架構」,迭層主要分成三層:操作系統、中間件、應用程序。
(3)android系統的架構擴展閱讀
開發人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性限制)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。
隱藏在每個應用後面的是一系列的服務和系統,其中包括;
豐富而又可擴展的視圖(Views),可以用來構建應用程序,它包括列表(lists),網格(grids),文本框(textBoxes),按鈕(buttons),甚至可嵌入的web瀏覽器。
內容提供器(ContentProviders)使得應用程序可以訪問另一個應用程序的數據(如聯系人資料庫),或者共享它們自己的數據
資源管理器(ResourceManager)提供非代碼資源的訪問,如本地字元串,圖形,和布局文件(layoutfiles)。
通知管理器(NotificationManager)使得應用程序可以在狀態欄中顯示自定義的提示信息。
活動管理器(ActivityManager)用來管理應用程序生命周期並提供常用的導航回退功能。
『肆』 android的系統架構
Android的系統架構和其操作系統一樣,採用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。
應用程序
Android會同一系列核心應用程序包一起發布,該應用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等。所有的應用程序都是使用JAVA語言編寫的。
應用程序框架
開發人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。
隱藏在每個應用後面的是一系列的服務和系統, 其中包括;
豐富而又可擴展的視圖(Views),可以用來構建應用程序, 它包括列表(Lists),網格(Grids),文本框(Text boxes),按鈕(Buttons), 甚至可嵌入的web瀏覽器。
內容提供器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人資料庫), 或者共享它們自己的數據
資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字元串,圖形,和布局文件(Layout files )。
通知管理器 (Notification Manager) 使得應用程序可以在狀態欄中顯示自定義的提示信息。
活動管理器( Activity Manager) 用來管理應用程序生命周期並提供常用的導航回退功能。
系統運行庫
Android 包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們通過 Android 應用程序框架為開發者提供服務。以下是一些核心庫:
* 系統 C 庫 - 一個從BSD繼承來的標准C系統函數庫 Libc ), 它是專門為基於Embedded linux的設備定製的。
* 媒體庫 - 基於PacketVideo OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
* Surface Manager - 對顯示子系統的管理,並且為多個應用程序提 供了2D和3D圖層的無縫融合。
* LibWebCore - 一個最新的web瀏覽器引擎用,支持Android瀏覽器和一個可嵌入的web視圖。
『伍』 android的系統結構
Android 是運行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 Userspace,使得Linux driver 與 Linux kernel徹底分開。Bionic/Libc/Kernel/ 並非標準的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。 APK是安卓應用的後綴,是AndroidPackage的縮寫,即Android安裝包(apk)。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式為apk。 APK文件其實是zip格式,但後綴名被修改為apk,通過UnZip解壓後,可以看到Dex文件,Dex是Dalvik VM executes的全稱,即Android Dalvik執行程序,並非Java ME的位元組碼而是Dalvik位元組碼。
APK文件結構
一個APK文件結構為:
1. META-INF (註:Jar文件中常可以看到);
2. res (註:存放資源文件的目錄) ;
3. AndroidManifest.xml (註:程序全局配置文件) ;
4. classes.dex (註:Dalvik位元組碼);
5. resources.arsc (註:編譯後的二進制資源文件)。
總結下我們發現Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接執行安裝,和Windows Mobile中的PE文件有區別,這樣做對於程序的保密性和可靠性不是很高,通過dexmp命令可以反編譯,但這樣做符合發展規律,微軟的 Windows Gadgets或者說WPF也採用了這種構架方式。
在Android平台中dalvik vm的執行文件被打包為apk格式,最終運行時載入器會解壓然後獲取編譯後androidmanifest.xml文件中的permission分支相關的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會發現執行是不受限制的。
最終我們平時安裝的文件可能不是這個文件夾,而在android rom中系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。 Android 的HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 Kernel independent 的概念,也讓 Android framework 的開發能在不考量驅動程序實現的前提下進行發展。
HAL stub 是一種代理人(Proxy)的概念,Stub 是以 *.so 檔的形式存在。Stub 向 HAL「提供」操作函數(Operations),並由 Android runtime 向 HAL 取得 Stub 的Operations,再 Callback 這些操作函數。HAL 里包含了許多的 Stub(代理人)。Runtime 只要說明「類型」,即 Mole ID,就可以取得操作函數。 操作系統與應用程序的溝通橋梁,應用分為兩層:函數層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。
Android採用OpenCORE作為基礎多媒體框架。Open CORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當,但相較於Linux Cairo, skia 功能還只是雛形的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,Skia 也是Google Chrome 的圖形引擎。
Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可通過ContentResolver類(Column)取得共用資料庫。
Android的中間層多以Java 實現,並且採用特殊的Dalvik 虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種「暫存器型態」(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。
Dalvik虛擬機可以有多個實例(Instance), 每個Android應用程序都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程序時可達到優化。Dalvik 虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的文件。 Android本身是一個許可權分立的操作系統。在這類操作系統中,每個應用都以唯一的一個系統識別身份運行(Linux用戶ID與群組ID)。系統的各部分也分別使用各自獨立的識別方式。Linux就是這樣將應用與應用,應用與系統隔離開。
系統更多的安全功能通過許可權機制提供。許可權可以限制某個特定進程的特定操作,也可以限制每個URI許可權對特定數據段的訪問。
Android安全架構的核心設計思想是,在默認設置下,所有應用都沒有許可權對其他應用、系統或用戶進行較大影響的操作。這其中包括讀寫用戶隱私數據(聯系人或電子郵件),讀寫其他應用文件,訪問網路或阻止設備待機等。
安裝應用時,在檢查程序簽名提及的許可權,且經過用戶確認後,軟體包安裝器會給予應用許可權。從用戶角度看,一款Android應用通常會要求如下的許可權:
撥打電話、發送簡訊或彩信、修改/刪除SD卡上的內容、讀取聯系人的信息、讀取日程信的息,寫入日程數據、讀取電話狀態或識別碼、精確的(基於GPS)地理位置、模糊的(基於網路獲取)地理位置、創建藍牙連接、對互聯網的完全訪問、查看網路狀態,查看WiFi狀態、避免手機待機、修改系統全局設置、讀取同步設定、開機自啟動、重啟其他應用、終止運行中的應用、設定偏好應用、震動控制、拍攝圖片等。
一款應用應該根據自身提供的功能,要求合理的許可權。用戶也可以分析一款應用所需許可權,從而簡單判定這款應用是否安全。如一款應用是不帶廣告的單機版,也沒有任何附加的內容需要下載,那麼它要求訪問網路的許可權就比較可疑。
『陸』 Android 的ARM架構和X86架構
Android開發中,在打包發布應用時會選擇應用適配的cpu架構平台,在引用第三方庫時也遇到根據不同cpu架構引入相應的so包。Android主要包括一下cpu架構:
在Android系統上,每一個CPU架構對應一個ABI:
ABI是Application Binary Interface的縮寫,常表示兩個程序模塊之間的介面,且其中一個模塊常為機器碼級別的library或操作系統。它定義了函數庫的調用、應用的二進制文件(尤其是.so)如何運行在相應的系統平台上等細節。其中mips及mips64極少用於手機,出發點是高性能,主要用於路由器、貓。
從CPU發明到現在,有非常多種架構,從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來分類的話,它們可以被分為兩大類,即所謂的「復雜指令集(CISC)」與「精簡指令集(RISC)」系統。
Intel和ARM處理器的第一個區別是,前者使用復雜指令集(CISC),後者使用精簡指令集(RISC)。屬於這兩種類中的各種架構之間最大的區別,在於它們的設計者考慮問題方式的不同。
ARM架構是一個32位精簡指令集RISC(Reced Instruction Set Computing)處理器架構,其廣泛地使用在許多嵌入式系統設計。但在其他領域上也有很多作為,由於節能的特點,ARM處理器非常適用於移動通信領域,匹配其主要設計目標為低成本、高性能、低耗電的特性。
ARM的優勢不在於性能強大而在於效率,ARM採用RISC流水線指令集,在完成綜合性工作方面根本就處於劣勢,而在一些任務相對固定的應用場合其優勢就能發揮得淋漓盡致。ARM結構的電腦是通過專用的數據介面使CPU與數據存儲設備進行連接,所以ARM的存儲、內存等性能擴展難以進行(一般在產品設計時已經定好其內存及數據存儲的容量),所以採用ARM結構的系統,一般不考慮擴展。基本奉行「夠用就好」的原則。
x86 架構是一個復雜指令集CISC(Complex Instruction Set Computer)處理器架構。X86結構的電腦無論如何都比ARM結構的系統在性能方面要快得多、強得多。X86的CPU隨便就是1G以上、雙核、四核。X86結構的電腦採用「橋」的方式與擴展設備(如:硬碟、內存等)進行連接,而且x86結構的電腦出現了近30年,其配套擴展的設備種類多、價格也比較便宜,所以x86結構的電腦能很容易進行性能擴展,如增加內存、硬碟等。
『柒』 android的系統架構
android系統架構分從下往上為linux 內核層、運行庫、應用程序框架層、和應用程序層
linuxkernel:負責硬體的驅動程序、網路、電源、系統安全以及內存管理等功能。
libraries和 androidruntime:libraries:即c/c++函數庫部分,大多數都是開放源代碼的函數庫,例如webkit,該函數庫負責 android網頁瀏覽器的運行,例如標準的c函數庫libc、openssl、sqlite等,當然也包括支持游戲開發2dsgl和 3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,例如mpeg4、h.264、mp3、 aac、amr、jpg和png等眾多的多媒體文件格式。android的runtime負責解釋和執行生成的dalvik格式的位元組碼。
applicationframework(應用軟體架構),java應用程序開發人員主要是使用該層封裝好的api進行快速開發。
applications:該層是java的應用程序層,android內置的googlemaps、e-mail、即時通信工具、瀏覽器、mp3播放 器等處於該層,java開發人員開發的程序也處於該層,而且和內置的應用程序具有平等的位置,可以調用內置的應用程序,也可以替換內置的應用程序。
上面的四個層次,下層為上層服務,上層需要下層的支持,調用下層的服務,這種嚴格分層的方式帶來的極大的穩定性、靈活性和可擴展性,使得不同層的開發人員可以按照規范專心特定層的開發。
android應用程序使用框架的api並在框架下運行,這就帶來了程序開發的高度一致性,另一方面也告訴我們,要想寫出優質高效的程序就必須對整個 applicationframework進行非常深入的理解。精通applicationframework,你就可以真正的理解android的設計 和運行機制,也就更能夠駕馭整個應用層的開發。