Ⅰ 什麼是android系統,android的發展以及android的平台架構和特性
Android平台採用了整合的策略思想,包括底層Linux操作系統、中間層的中間件和上層的java應用程序。下面我把Android的特性及其架構體系結構總結一下。
一、Android的平台特性
Android平台有如下特性:
1. 應用程序框架支持組件的重用與替換。
這樣我們可以把系統中不喜歡的應用程序刪除,安裝我們喜歡的應用程序。
2. Dalvik虛擬機專門為移動設備進行了優化。
Android應用程序將由Java編寫、編譯的類文件通過DX工具轉換成一種後綴名為.dex的文件來執行。Dalvik虛擬機是基於寄存器的,相對於Java虛擬機速度要快很多。
3. 內部集成瀏覽器基於開源的WebKit引擎。
有了內置的瀏覽器,這將意味著WAP應用的時代即將結束,真正的移動互聯網時代已經來臨,手機就是一台「小電腦」,可以在網上隨意遨遊。
4. 優化的圖形庫包括2D和3D圖形庫,3D圖形庫基於OpenGL ES 1.0。
強大的圖形庫給游戲開發帶來福音。在3G最為重要的的應用莫過於手機上網和手機游戲。
5. SQLite用作結構化的數據存儲。
6. 多媒體支持包括常見的音頻、視頻和靜態印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7. GSM電話(依賴於硬體)。
8. 藍牙(Bluetooth)、EDGE、3G、WiFi(依賴於硬體)。
9. 照相機、GPS、指南針和加速度計(依賴於硬體)。
10. 豐富的開發環境包括設備模擬器、調試工具、內存及性能分析圖表和Eclipse集成的開發環境插件。
Google提供了Android開發包SDK,其中包含了大量的類庫和開發工具,並且針對Eclipse的可視化開發插件ADT。
二、Android平台架構
從上圖我們可以看出,Android操作系統的體系結構可分為4層,由上到下依次是應用程序、應用程序框架、核心類庫和Linux內核,其中第三層還包括Android運行時的環境。下面分別來講解各個部分。
1. 程序應用
Android
連同一個核心應用程序包一起發布,該應用程序包包括E-mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯系人管理程序等。所有的應用程序都是用Java編寫的。
2. 應用程序框架
開發者完全可以訪問核心應用程序所使用的API框架。該應用程序框架架構用來簡化組件軟體的重用,任何一個應用程序都可以發布它的功能塊並且任何其他的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性限制)。該應用程序重用機制使得組件可以被用戶替換。
以下所有的應用程序都由一系列的服務和系統組成,包括:
1)一個可擴展的視圖(Views)可以用來創建應用程序,包括列表(lists)、網路(grids)、文本框(text
boxes)、按鈕(buttons),甚至是一個可嵌入的Web瀏覽器。
2)內容管理器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人資料庫),或者共享它們自己的數據。
3)一個資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字元串、圖形和分層文件(layout files)。
4)一個通知管理器(Notification Manager)使得應用程序可以在狀態欄中顯示客戶通知信息。
5)一個活動類管理器(Activity Manager)用來管理應用程序生命周期並提供常用的導航回退功能。
3. Android程序庫
Android包括一個被Android系統中各種不同組件所使用的C/C++集庫。該庫通過Android應用程序框架為開發者提供服務。
以下是一些主要的核心庫:
1)系統C庫:一個從BSD繼承來的標准C系統函數庫(libc),專門為基於Embedded Linux的設備定製。
2)媒體庫:基於PacketVideo
OpenCORE;該庫支持錄放,並且可以錄制許多流行的音頻視頻格式,還有靜態映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。
3)Surface Manager:對顯示子系統的管理,並且為多個應用程序提供2D和3D圖層的無縫融合。
4)LibWebCore:一個最新的Web瀏覽器引擎,用來支持Android瀏覽器和一個可嵌入的Web視圖。
5)SGL:一個內置的2D圖形引擎。
6)3D libraries:基於OpenGL ES 1.0 APIs實現;該庫可以使用硬體3D加速(如果可用)或者使用高度優化的3D軟加速。
7)FreeType:點陣圖(bitmap)和向量(vector)字體顯示。
8)SQLite:一個對於所以應用程序可用、功能強勁的輕型關系型資料庫引擎。
4. Android運行庫
Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數功能。
每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik是針對同時高效地運行多個VMs實現的。Dalvik虛擬機執行.dex的Dalvik可執行文件,該格式文件針對最小內存使用做了優化。該虛擬機是基於寄存器的,所有的類都是經由Java匯編器編譯,然後通過SDK中的DX工具轉化成.dex格式由虛擬機執行。
Dalvik虛擬機依賴於Linux的一些功能,比如線程機制和底層內存管理機制。
5. Linux內核
Android的核心系統服務依賴於Linux內核,如安全性、內存管理、進程管理、網路協議棧和驅動模型。Linux內核也同時作為硬體和軟體棧之間的硬體抽象層。
Ⅱ 現在安卓支持用c++語言開發應用了嗎
當然支持,安卓(android)開發工具集里有個所謂的NDK就是用C/C++編程的,如果用android studio開發用NDK是比較方便的。
安卓(android)從誕生之日起就支持c/c++的編程,android代碼本身,底層也全部是c/c++來編寫,應用層用java,通過JNI(Java Native Interface)機制來和其它語言互相通信(互相調用),在android里主要是c/c++和java互相調用,很多java調用的庫也是用c/c++來寫的。
現在的android在應用層(app)也強化了對c/c++代碼的支持,並提供了一整套把java代碼和c/c++編譯成的.so文件打包成apk,便於發布的功能,就是所謂的NDK(Native Development Kit), android studio對NDK功能做了原生的支持
之所以android要越來越支持NDK,原因主要包括:
1.代碼的保護。由於apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。
2.可以方便地使用現存的開源庫。大部分現存的開源庫都是用C/C++代碼編寫的。
3.提高程序的執行效率。將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。比如視頻,音頻壓縮,網路傳輸等功能
4.便於移植。用C/C++寫得庫可以方便在其他的嵌入式平台上再次使用。
Ⅲ Android有多強大
Android 用甜點作為它們系統版本的代號的命名方法開始於 Andoird 1.5 發布的時候。作為每個版本代表的甜點的尺寸越變越大,然後按照26個字母數序:紙杯蛋糕,甜甜圈,松餅,凍酸奶,姜餅,蜂巢。
Android 1.1
發布時間:發布於 2008 年9月
Android 1.5
Cupcake紙杯蛋糕 發布時間:發布於 2009 年 4 月
Android 1.6
Donut甜甜圈 發布時間:2009 年 9 月
Android 2.0
Eclair松餅 發布時間:2009 年 10 月 26 日
Android 2.1
Eclair松餅 發布時間: 2009 年 10 月 26 日 Android 2.1主要特性:提升硬體速度 更多屏幕以及解析度選擇 大幅度的用戶界面改良支持 Exchange活動牆紙 大幅改進虛擬鍵盤 藍牙 2.1 Google 地圖
Android 2.2
Froyo凍酸奶 谷歌於北京時間2010年5月20日晚上10:30點在舊金山Moscone會展中心舉辦Google I/O 2010大會第二天的會議,Google正式發布了代號是「froyo 凍酸奶」的Android操作系統2.2版。 相對於上一版本的 改變: 1、整體性能大幅度的提升 2、3G網路共享功能。 3、Flash的支持。 4、App2sd功能。 5、全新的軟體商店。 6、更多的Web應用API介面的開發。
Android 2.2 For x86
在幾位華人軟體工程師的努力下,中國的用戶已經可以享受到真正在上網本上可以安裝使用的Android了,這就是孫翊、黃志偉和Corentin Chary和其他幾位活躍的開發人員正在參與的Android-x86開源項目。此外,還有其他的開發人員如Kelly2.Blue、Wu Hai Gang、Swand ke 和 Wallace1 wang,他們都是來自中國大陸和台灣的華人軟體工程師。 在孫翊發來的最新版本更新說明中,明確表示:他們已經解決了眾多的技術難題,包括中文拼音輸入法的bug修訂,藍牙支持,無線網卡支持、SSL的bug修訂等,甚至已經可以直接安裝到上網本上,從硬碟啟動。
Android2.3
Gingerbread姜餅 北京時間2010年12月7日凌晨,Google正式對外發布了他們的下一代智能手機操作系統Android 2.3也就被大家所熟知的Android Gingerbread系統。 主要更新包括: 游戲:增加了新的垃圾回收和優化處理事件,以提高對游戲的支持能力。原生代碼可直接存取輸入和感應器事件、EGL/OpenGL ES、OpenSL ES。新的管理窗口和生命周期的框架。 多媒體:支持VP8和WebM視頻格式,提供AAC和AMR寬頻編碼,提供了新的音頻效果器,比如混響、均衡、虛擬耳機和低頻提升 通訊方式:支持前置攝像頭、SIP/VOIP和NFC(近場通訊) 站在用戶的角度看,這次更新的亮點主要有: 簡化界面、速度提升: 更快更直觀的文字輸入: 一鍵文字選擇和復制/粘帖: 改進的電源管理系統: 新的應用管理方式: 原生支持前置攝像頭、互聯網通話和NFC(近場通訊): 系統原生支持VoIP,可以在聯系人里加入它的SIP帳戶,然後直接通過系統來撥打VoIP電話。 增加下載管理器:
Android 2.4
Ice cream sandwich冰激凌三明治 預計在2011年第四季度發布。其甜品代號為 Ice cream sandwich(冰激凌三明治) 目前已知的Android 2.4帶來的更新包括更多的動畫特效、更快的運行速度、軟體通話降噪、視頻聊天等。
Android N.n
有可靠的消息人士表示,繼「冰激凌三明治」之後,下一版Android系統的代號將為「Jelly Bean」。
Android3.0
Honeycomb(蜂巢) 3.0系統特性 ·優化針對平板 ·全新設計的UI增強網頁瀏覽功能 ·n-app purchases功能
Android3.1
Honeycomb 蜂巢(改進3.0BUG) ·經過優化的Gmail電子郵箱; ·全面支持GoogleMaps Android 3.1Honeycomb(3.0改進) 將Android手機系統跟平板系統再次合並,從而方便開發者。 任務管理器可以滾動,支持USB 輸入設備(鍵盤、滑鼠等)。 支持 Google TV.可以支持XBOX 360無線手柄 widget支持的變化,能更加容易的定製屏幕widget插件。
Android 3.2
Honeycomb(蜂巢) 2011年7月13日,谷歌公司放出了新版「蜂巢」Android 3.2的升級源碼,合作廠商摩托羅拉亦在當日發布了針對旗下XOOM平板電腦的升級固件,為用戶更新新版系統。 Android 3.2這一新版平板電腦操作系統開始支持7英寸設備,並引入了應用顯示縮放功能,可以讓那些針對手機開發的應用,更平滑的顯示在平板電腦上。
編輯本段系統優勢
開放性 在優勢方面,Android平台首先就是其開放性,開放的平台允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著用戶和應用的日益豐富,一個嶄新的平台也將很快走向成熟。 掙脫束縛 在過去很長的一段時間,特別是在歐美地區,手機應用往往受到運營商制約,使用什麼功能接入什麼網路,幾乎都受到運營商的控制。自從iPhone上市,用戶可以更加方便地連接網路,運營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動網路的逐步過渡和提升,手機隨意接入網路已不是運營商口中的笑談。 豐富的硬體 這一點還是與Android平台的開放性相關,由於Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。 開發商 Android平台提供給第三方開發商一個十分寬泛、自由的環境。因此不會受到各種條條框框的阻撓,可想而知,會有多少新穎別致的軟體會誕生。但也有其兩面性,血腥、暴力、情色方面的程序和游戲如何控制正是留給Android難題之一。 Google應用 從搜索巨人到全面的互聯網滲透,Google服務如地圖、郵件、搜索等已經成為連接用戶和互聯網的重要紐帶,而Android平台手機將無縫結合這些優秀的Google服務。
編輯本段系統缺陷
一、Android系統手機泄密 二、撥號後自動掛斷電話 通話BUG頻繁出現 三、對硬體配置要求高 製造成本增加 四、系統費電嚴重 安卓手機續航不足 五、系統計算器計算有偏差 例如在Android系統自帶的計算器內輸入14.52-14.49,正確結果應該是0.03,但是計算器結果顯示的數字為0.0299999。
編輯本段研發聯盟
開放手機聯盟
為了推廣Android,Google和幾十個手機相關企業建立了開放手機聯盟(Open Handset Alliance)。 聯盟成員包括摩托羅拉(Motorola)、HTC、SAMSUNG、LG、Intel、NVIDIA、SiRF、Skype、KUPA Map 、MTK 以及中國移動在內的34家技術和無線應用的領軍企業。這34家企業中並不包含把持Symbian的Nokia公司,以及憑借著iPhone風光正在的Apple公司,微軟沒有加入,加拿大RIM和它的Blackberry也被擋在門外。 手機開放聯盟大家庭成員名單: 終端製造商 Motorola(摩托羅拉)- 美國(美國最大的手機製造商,著名老牌IT公司) Sony Ericsson(索尼愛立信)- 英國(索尼和愛立信的合資公司) HTC(宏達國際電子股份有限公司)-中國台灣 Samsung Electronics(三星電子)- 韓國 LG Electronics(LG電子)- 韓國 Lumigon (丹麥陸力更手機公司)- 丹麥 ARCHOS(愛可視)- 法國 TOSHIBA(東芝)- 日本 安卓
SHARP(夏普)-日本 Fujitsu(富士通)-日本 NEC(日本電気株式會社)-日本 魅族 - 中國 小米--中國 移動運營商 China Telecom(中國電信)- 中國 China Mobile(中國移動)- 中國 China Unicom(中國聯通)- 中國 SK Telecom - 韓國 KT - 韓國 LG U - 韓國 KDDI by AU - 日本 Softbank -日本 NTT DoCoMo(日本電信電話公司)- 日本 Sprint Nextel(美國斯普林特Nextel公司)- 美國 Telecom Italia(義大利電信)- 義大利 Telefónica - 西班牙 T-Mobile - 德國 半導體公司 ARM- 英國 Texas Instruments(德州儀器)- 美國 Qualcomm(高通)- 美國 NVIDIA(英偉達)- 美國 MediaTek(聯發科)- 中國台灣 ST(意法半導體)- 歐洲 Infineon(英飛凌科技)- 德國 ST-Ericsson(ST愛立信)- 歐洲 Audience (聽眾)- 美國 Broadcom (博通)- 美國 Intel(英特爾)- 美國 Marvell (俊茂微電子)- 美國 SiRF(瑟夫)- 美國 Synaptics(新思)- 美國 HP(惠普)- 美國 軟體公司 Aplix - 日本 Ascender - 美國 Skype(微軟)- 美國 Esmertec(微迅)- 瑞士 Living Image - 美國 NMS Communications - 加拿大 Noser Engineering AG - 德國 Nuance Communication - 美國 PacketVideo - 美國 SkyPop - 美國 Sonix Network - 美國 The Astonishing Tribe - 瑞典 Wind River Systems(風河)- 美國
編輯本段使用品牌
大事記
2008年9月22日,美國運營商德國T-Mobile在紐約正式發布第一款Android手機——T-Mobile G1。該款手機為台灣宏達電子(HTC)代工製造,是世界上第一部使用Android操作系統的手機,支持WCDMA/HSPA網路,理論下載速率7.2Mbps,並支持Wi-Fi。 2009年10月28日正式發布了Android 2.0 智能手機操作系統。 2010年1月索尼愛立信首款Android機型X10上市 。 2010年1月7日,Google在其美國總部正式向外界發布了旗下首款合作品牌手機Nexus One(HTC G5),並同時開始對外發售。 2010年7月9日,美國NDP集團調查顯示,Android系統已佔據了美國移動系統市場28%的份額。 北京時間2011年3月25日,據國外媒體報道,谷歌周四表示,谷歌暫停開源Android3.0,並將暫時阻止小型手機生產商使用其Android 3.0「Honeycomb」系統,期限未定。 谷歌一位發言人通過電子郵件聲明稱,Honeycomb是專為平板電腦而非手機設計的,在該系統以開源形式發布前,還有很多工作要做。谷歌向《商業周刊》表示,推遲發布可能達數月之久。
國內品牌
HTC 安卓手機(5張)魅族 魅族M9為一款多點觸摸手機,於2010年12月16日發布,2011年1月1日正式上市。 J.wong在論壇發帖確定魅族M9將不能刷原生的Android系統,M9將不是簡簡單單的在Android系統上加個UI,而是深層定製安卓系統,現有的Android軟體的兼容性也絕對不是問題。J.wong甚至表態想刷Android系統的安卓控們請遠離M9。J.wong表示魅族M9的系統雖然內核採用Android內核,但從UI和用戶體驗方面完全看不出任何安卓的影子,使用Android內核只是為了能兼容數以十萬計的安卓軟體,增強魅族M9的軟體擴展性,讓M8之前一直被詬病的軟體數量成為歷史。 天語 天語W700是K-Touch天語手機在2011年初推出的一款WCDMA制式3G Android智能手機,同時,它還是第一款國產雙核手機。這款採用了NVIDIA TEGRA2平台的高端智能手機首次發布在位於拉斯維加斯的CES2011展會上亮相。 天語W700採用基於ARM Cortex-A9 Dual Core的Tegra2 AP20H處理器,主頻為1GHz,具有高性能低功耗的特點,它集成了高清視頻處理器、圖像處理器、音頻處理器等眾多模塊的高度整合處理器。 聯想 OMS和T-mobile G1搭載的Android(以最初上市版本為主)的不同之處就是可以使用戶自行關閉正在運行的程序而不是由系統控制:按住屏幕上方向下拖動即可看到任務管理器。 HKC Pearl 做為目前在市面上唯一正式銷售的Windows和Android系統雙系統手機,這款HKC Pearl 珍珠珠配備了QVGA屏幕,內存採用了128MB/256MB的標准配置,主處理器採用PXA 310處理器,624Mhz的主頻性能非常強勁,而且機器還配備了Wi-Fi,藍牙2.0無線傳輸設置。 華為 華為U8230在外觀上有別於其他Android手機的塑料風格,通體的銀灰色和正面功能鍵盤的發絲紋路都洋溢著商務機型的味道。而作為功能上的特色,U8230擁有一塊3.5英寸的大屏幕、高達1500毫安時的鋰電池和一枚320萬象素攝像頭採用Android平台1.5版本。 中興 中興最近也大力發展android手機,推出了v880。 海爾 海爾的產品也青睞搭載android系統。海爾於09年上市的H7採用直板全觸屏設計,操作系統上正是採用了最新的Google Android2.0操作系統。 海爾於2011年7月亮相青島國際消費電子博覽會的haipad,搭載創新工場家族「點心os」首款為PAD定製的「點心—互聯網智能手持終端解決方案」。 華禹 xPhone是由上海禹華通信技術有限公司設計的,採用類iphone的觸控設計,配置了3寸WQVGA解析度的觸摸屏,內建300W像素的攝像頭,搭載Android平台,採用主頻 624Mhz的Marvell PXA-310處理器,擁有128MB SDRAM+256MB ROM的內存配置,支持最大16GB的存儲卡擴展,給出的參數中還加入了WiFi功能。 琦基 去年11月27日,琦基發布了全球首款Google Android/Windows Mobile雙操作系統的智能手機琦基i6,採用Google Android操作系統的叫做琦基i6 goal,採用Windows Mobile操作系統的叫做琦基i6 Win。 藍魔 藍魔的V系列MP4以及平板電腦採用安卓系統。 酷派 推出D539等多款搭載Android平台的3G商務機型 小米 小米手機是小米公司(全稱北京小米科技有限責任公司)研發的一款高性能發燒級智能手機。手機預計2011年8月發布,售價1999元,主要針對手機發燒友,採用線上銷售模式。小米手機使用了高通Snapdragon S3 MSM8260手機處理器,也是世界上首款雙核1.5GHz的智能手機。
國外品牌
三星、LG、摩托羅拉、夏普、索尼愛立信
編輯本段系統架構
應用程序
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 Management),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
安全與許可權
Android本身是一個許可權分立的操作系統。在這類操作系統中,每個應用都以唯一的一個系統識別身份運行(Linux用戶ID與群組ID)。系統的各部分也分別使用各自獨立的識別方式。Linux就是這樣將應用與應用,應用與系統隔離開。 系統更多的安全功能通過許可權機制提供。許可權可以限制某個特定進程的特定操作,也可以限制每個URI許可權對特定數據段的訪問。 Android安全架構的核心設計思想是,在默認設置下,所有應用都沒有許可權對其他應用、系統或用戶進行較大影響的操作。這其中包括讀寫用戶隱私數據(聯系人或電子郵件),讀寫其他應用文件,訪問網路或阻止設備待機等。 安裝應用時,在檢查程序簽名提及的許可權,且經過用戶確認後,軟體包安裝器會給予應用許可權。從用戶角度看,一款Android應用通常會要求如下的許可權: 撥打電話、發送簡訊或彩信、修改/刪除SD卡上的內容、讀取聯系人信息、讀取日程信息,寫入日程數據、讀取電話狀態或識別碼、精確的(基於GPS)地理位置、模糊的(基於網路獲取)地理位置、創建藍牙連接、對互聯網的完全訪問、查看網路狀態,查看WiFi狀態、避免手機待機、修改系統全局設置、讀取同步設定、開機自啟動、重啟其他應用、終止運行中的應用、設定偏好應用、震動控制、拍攝圖片等。 一款應用應該根據自身提供的功能,要求合理的許可權。用戶也可以分析一款應用所需許可權,從而簡單判定這款應用是否安全。如一款應用是不帶廣告的單機版,也沒有任何附加內容需要下載,那麼它要求訪問網路的許可權就比較可疑。
Ⅳ 發布android工程師崗位職責有哪些
其實看你們公司的業務需求的:
給你個參考
1:崗位職責:
1. 負責Android平台應用程序的設計與開發;
2. 參與移動平台軟體框架的研究,設計和實現、關鍵技術驗證和選型等工作;
3. 完成核心模塊的詳細設計及編碼工作, 並能指導開發工程師解決在開發過程中的技術問題;
4. 參與技術難題攻關、組織技術積累等工作。
5. 配合項目經理執行開發過程的技術管理工作。
崗位要求:
1. 計算機科學或相關專業, 本科以上學歷, 2年以上開發經驗android 開發經驗。
2. 精通Java,同時熟悉C語言的優先;
3. 熟悉Android SDK,熟練掌握Android常用開發組件;
4. 能獨立開發高性能的Android應用,熟悉Android平台架構;
5. 至少完整經歷過一個移動設備客戶端產品的開發;
6. 具有良好的多線程、socket、sqlite編程經驗,擁有良好的設計模式和思維;
7. 有較好的問題分析、獨立解決問題、溝通和bug追蹤能力;
2:崗位職責:
1.根據需求在Android移動端進行APP的設計與開發;
2.參與項目的產品設計、分析、開發以及維護;
3.參與移動端的介面開發,架構設計;
4.獨立完成開發工作,進行模塊測試,保證代碼的質量;
5.將學習和研究到新的移動互聯網技術應用到產品中進行創新;
6.修正並驗證測試中發現的問題;
7.可以保證產品的正常運行以及維護升級。
任職要求:
1.2-3年Android移動端開發經驗;
2.工作認真,踏實有責任心;
3.有較強的溝通能力,及團隊合作能力,發現問題可以及時溝通;
4.對代碼具有良好的理解,可以編寫結構良好的代碼,具有良好的規范。
參考下!其實如果你不知道怎麼寫,可以去招聘網參照人家怎麼招聘的!
Ⅳ 學手機游戲開發需要學什麼
1、首先要有Java基礎
安卓是基於Java的,所以想要從事android開發相關工作一定要先有一定的Java基礎知識,這里的Java基礎主要包括兩方面:JavaSE基礎和Java Web開發基礎。
2、JavaSE基礎
JavaSE是整個Java的核心,其他所有的Java相關知識點,都是在JavaSE的基礎上進行的擴充而已。所以對JavaSE的學習,需要牢固掌握Java的基本語法、理解面向對象的一些概念、Java異常、集合框架、Java I/O,反射、泛型和多線程以及網路編程等知識。
3、Java Web開發
Java Web的主要內容包括:
Java解析XML文件DOM4J、MySql資料庫的應用、多表連接查詢的應用、Jsp和Servlet應用、Http協議解析、Tomcat伺服器的應用配置、WebService服務配置應用。
4、Android基礎
有了Java基礎之後還要學習一些android開發的基礎知識,包括學Android的基本控制項開發和使用、高級控制項的使用,掌握布局和自定義控制項、Android的數據存儲方法,Android的圖形編程技術,2D圖形的編程,圖像的旋轉、動畫框架等。
5、android游戲編程知識
android開發也分為很多方面,所以從事android游戲開發就要學習一些安卓游戲開發方面的專業知識,包括Android游戲開發概述,SurfaceView的使用方法,物理小球技術碰撞檢測技術,游戲引擎基礎概念,Cocoa2d-Android引擎使用方法,OpenGL ES使用方法,圖片、文字和背景音樂等資源的使用方法。
拓展資料
關於大型游戲的開發:
大型游戲(cs已經有些過時了)魔獸世界,星際等等還有國內的劍俠情緣,這類游戲都是大型游戲。開發它們肯定不是一個人能完成的,一般的大型游戲開發絕不是用某種語言這么單純的問題。
一個大型游戲的開發需要龐大的團隊使用各種各樣的語言和工具來完成。總結一下主要有C/C++,匯編語言,著色器語言,腳本語言,高效的開發語言C#或Java。
開發游戲我們經常聽到的是游戲引擎,一個游戲引擎決定一個游戲最基本的東西操作和效果,那麼一般的游戲開發架構從底到頂一般是Direct X(Windows平台)——游戲引擎——游戲。Direct X可是大名鼎鼎相當於所有顯卡的一個統一介面,為游戲提供一個利用硬體渲染的編程模型,但Direct X介面為了追求高性能功能非常簡單基本的繪圖功能,不利於游戲的高效開發。
此時就需要根據游戲特點對其進行適當的取捨和封裝,實現一組更高抽象的游戲開發介面和框架,可以理解成游戲引擎中的圖形引擎。這部分的開發一般使用的語言是C/C++和少量的匯編語言。
Ⅵ android 面試題
1、前言
6 月 26 日, Google Android 發布了 NDK ,引起了很多發人員的興趣。 NDK 全
稱: Native Development Kit 。下載地址為:
http://developer.android.com/sdk/ndk/1.5_r1/index.html 。
2、誤解
新出生的事物,除了驚喜外,也會給我們帶來一定的迷惑、誤解。
2.1、誤解一: NDK 發布之前, Android 不支持進行 C 開發
在 Google 中搜索 「NDK」 ,很多 「Android 終於可以使用 C++ 開發 」 之類
的標題,這是一種對 Android 平台編程方式的誤解。其實, Android 平台從誕生起,就已
經支持 C 、 C++ 開發。眾所周知, Android 的 SDK 基於 Java 實現, 這意味著基於 Android
SDK 進行開發的第三方應用都必須使用 Java 語言。但這並不等同於 「 第三方應用只能使
用 Java」 。在 Android SDK 首次發布時, Google 就宣稱其虛擬機 Dalvik 支持 JNI 編程
方式,也就是第三方應用完全可以通過 JNI 調用自己的 C 動態庫,即在 Android 平台上,
「Java+C」 的編程方式是一直都可以實現的。
當然這種誤解的產生是有根源的:在 Android SDK 文檔里,找不到任何 JNI 方面的
幫助。即使第三方應用開發者使用 JNI 完成了自己的 C 動態鏈接庫( so )開發,但是 so
如何和應用程序一起打包成 apk 並發布?這裡面也存在技術障礙。我曾經花了不少時間,
安裝交叉編譯器創建 so ,並通過 asset (資源)方式,實現捆綁 so 發布。但這種方式只
能屬於取巧的方式,並非官方支持。所以,在 NDK 出來之前,我們將 「Java+C」 的開發
模式稱之為灰色模式,即官方既不聲明 「 支持這種方式 」 ,也不聲明 「 不支持這種方
式 」 。
2.2、誤解二:有了 NDK ,我們可以使用純 C 開發 Android 應用
Android SDK 採用 Java 語言發布,把眾多的 C 開發人員排除在第三方應用開發外
( 注意:我們所有討論都是基於「 第三方應用開發 」 , Android 系統基於 Linux ,系
統級別的開發肯定是支持 C 語言的。 )。 NDK 的發布,許多人會誤以為,類似於 Symbian 、
WM ,在 Android 平台上終於可以使用純 C 、 C++ 開發第三方應用了!其實不然, NDK
文檔明確說明: it is not a good way 。因為 NDK 並沒有提供各種系統事件處理支持,也沒
有提供應用程序生命周期維護。此外,在本次發布的 NDK 中,應用程序 UI 方面的 API 也
沒有提供。至少目前來說,使用純 C 、 C++ 開發一個完整應用的條件還不完備。
3、NDK 是什麼
對 NDK 進行了粗略的研究後,我對 「NDK 是什麼 」 的理解如下:
1、NDK 是一系列工具的集合。
NDK 提供了一系列的工具,幫助開發者快速開發 C (或 C++ )的動態庫,並能自動
將 so 和 java 應用一起打包成 apk 。這些工具對開發者的幫助是巨大的。
NDK 集成了交叉編譯器,並提供了相應的 mk 文件隔離 CPU 、平台、 ABI 等差異,
開發人員只需要簡單修改 mk 文件(指出 「 哪些文件需要編譯 」 、 「 編譯特性要求 」
等),就可以創建出 so 。
NDK 可以自動地將 so 和 Java 應用一起打包,極大地減輕了開發人員的打包工作。
2、NDK 提供了一份穩定、功能有限的 API 頭文件聲明。
oogle 明確聲明該 API 是穩定的,在後續所有版本中都穩定支持當前發布的 API 。
從該版本的 NDK 中看出,這些 API 支持的功能非常有限,包含有: C 標准庫( libc )、
標准數學庫( libm )、壓縮庫( libz )、 Log 庫( liblog )。
G
4、NDK 帶來什麼
1、NDK 的發布,使 「Java+C」 的開發方式終於轉正,成為官方支持的開發方式。
使用 NDK ,我們可以將要求高性能的應用邏輯使用 C 開發,從而提高應用程序的執
行效率。
使用 NDK ,我們可以將需要保密的應用邏輯使用 C 開發。畢竟, Java 包都是可以反
編譯的。
NDK 促使專業 so 組件商的出現。(樂觀猜想,要視乎 Android 用戶的數量)
2、NDK 將是 Android 平台支持 C 開發的開端。
NDK 提供了的開發工具集合,使開發人員可以便捷地開發、發布 C 組件。同時,
Google 承諾在 NDK 後續版本中提高 「 可調式 」 能力,即提供遠程的 gdb 工具,使我
們可以便捷地調試 C 源碼。在支持 Android 平台 C 開發,我們能感覺到 Google 花費了
很大精力,我們有理由憧憬 「C 組件支持 」 只是 Google Android 平台上 C 開發的開端。
畢竟, C 程序員仍然是碼農陣營中的絕對主力,將這部分人排除在 Android 應用開發之外,
顯然是不利於 Android 平台繁榮昌盛的。
Ⅶ 移動編程是什麼
移動編程是移動互聯網開發。
Ⅷ 安卓支持c++么
當然支持,安卓(android)開發工具集里有個所謂的NDK就是用C/C++編程的,如果用android studio開發用NDK是比較方便的。
安卓(android)從誕生之日起就支持c/c++的編程,android代碼本身,底層也全部是c/c++來編寫,應用層用java,通過JNI(Java Native Interface)機制來和其它語言互相通信(互相調用),在android里主要是c/c++和java互相調用,很多java調用的庫也是用c/c++來寫的。
現在的android在應用層(app)也強化了對c/c++代碼的支持,並提供了一整套把java代碼和c/c++編譯成的.so文件打包成apk,便於發布的功能,就是所謂的NDK(Native Development Kit), android studio對NDK功能做了原生的支持之所以android要越來越支持NDK,原因主要包括:
代碼的保護。由於apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大
可以方便地使用現存的開源庫。大部分現存的開源庫都是用C/C++代碼編寫的。
提高程序的執行效率。將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。比如視頻,音頻壓縮,網路傳輸等功能
便於移植。用C/C++寫得庫可以方便在其他的嵌入式平台上再次使用。