skia源碼
Ⅰ OpenGL(Skia)和Open(默認)有什麼區別選哪個比較好
skia是一個canvas api,面向2d painter。是個平面圖層生成器,就當是程序版的photoshop。
opengl是個驅動顯卡硬體的api,面向3D流水線,就像maya/blender,輸出空間渲染結果。
看你想畫什麼了。
日常用戶的話,顯卡強就選用opengl(但是有些不穩定)。
實驗性內容,按照谷歌的尿性,可能是未來Android OpenGL的一個重點變化,目前看來和普通用戶日常使用方面完全無關(幾乎沒有可見性的性能變化),甚至部分app還會出現各種渲染錯誤(微信掃一掃方向不正確等)。
OpenGL的高效實現(利用了圖形加速硬體)存在於Windows,部分UNIX平台和Mac OS。這些實現一般由顯示設備廠商提供,而且非常依賴於該廠商提供的硬體。開放源代碼庫Mesa是一個純基於軟體的圖形API,它的代碼兼容於OpenGL。但是,由於許可證的原因,它只聲稱是一個「非常相似」的API。
發展歷史:
OpenGL規范由1992年成立的OpenGL架構評審委員會(ARB)維護。ARB由一些對創建一個統一的、普遍可用的API特別感興趣的公司組成。
根據OpenGL網站,2002年6月的ARB投票成員包括3Dlabs、Apple Computer、ATI Technologies。
Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems,Microsoft曾是創立成員之一,但已於2003年3月退出。
Ⅱ 有誰學過android源代碼中SKIA部分內容的我想深入學習SKIA ,不是j簡單java層的調用,最好深入到每個函數
從Honeycomb[3.x]版本起,Andorid便支持GPU加速,但目前Android並沒有使用Skia GPU進行Webkit渲染。Skia GPU使用OpenGL進行後台加速渲染,未來也許會代替Skia。
很多人覺得,即使Android成功使用了GPU加速Webkit渲染,在訪問瀏覽如雅虎等一般的網站時,用戶也感覺不到太大的差異。因為Webkit的資源大多數消耗在了Javascript腳本和布局定位上。
我們覺得Webkit使用GPU加速渲染的最大意義無非是HTML5 Canvas[HTML5的動態繪圖效果]。Android渲染Canvas動畫實在太慢,導致Web開發者根本無法在Android上用Canvas開發網頁游戲[要注意的是,目前很多手機和平板的應用程序以HTML5做為界面,並使用Webkit工作,這也是很多應用在Android系統上感覺「不流暢」的重要因素。譯者注]。
Android Webkit開發平台[NDK]使用Skia GPU加速測試
我們對Android系統使用Skia GPU加速的Webkit進行了測試。我們手上已經有Android Webkit NDK的WAC2.0版本,我使用了某個提交版本的Skia源碼,並開啟Skia GPU加速將其編譯進NDK中。
我並沒有使用Canvas加速,因為這還要增加修改GraphicsContextSkia API的工作,所以並未測試Canvas渲染的性能。
Ⅲ android webkit圖片解碼流程是什麼呢在看源碼的時候注意到再\external\webkit\WebCore\platform\image-d
不是,android中對圖片解碼是放在external裡面有個skia的第三方庫。裡面封裝了它對jpg,png ,gif,bmp等圖片解碼的支持。這些圖片解碼時會用到external裡面的libjpg ,libgif,libpng等解碼庫。如果你需要支持tiff格式,也可以在裡面添加libtif 庫。同時修改skia裡面的部分代碼。如若需要具體方法,網路hi我
Ⅳ 手機智能系統的參數
目前為止應用在手機上的操作系統主要有PalmOS、SymbianOS、Windows Mobile、BlackBerryOS、MacOS、Android、HopenOS和LinuxOS,Winows Phone等9種。
Android以Java為編程語言,從介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類(class)負責創建視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結,達到復數程序同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。
View等同於J2ME的Displayable,程序人員可以通過 View 類與「XMLlayout」檔將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 會用甜點作為它們系統版本的代號?」這個命名方法開始於 Andoird 1.5 發布的時候。作為每個版本代表的甜點的尺寸越變越大,然後按照26個字母數序:紙杯蛋糕,甜甜圈,松餅,凍酸奶,姜餅,蜂巢。 在Symbian發展階段,出現了三個分支:分別是Crystal、Pearl和Quarz。前兩個主要針對通訊器市場,也是出現在手機上最多的,是今後智能手機操作系統的主力軍。第一款基於Symabian系統的手機是2000年上市的某款愛立信手機。而真正較為成熟的同時引起人們注意的則是2001年上市的諾基亞9210,它採用了Crystal分支的系統。而2002年推出的諾基亞7650與3650則是Symbian Pearl分系的機型,其中7650是第一款基於2.5G網的智能手機產品,他們都屬於Symbian的6.0版本。索尼愛立信推出的一款機型也使用了Symbian的Pearl分支,版本已經發展到7.0,是專為3G網路而開發的,可以說代表了當今最強大的手機操作系統。此外,Symbian從6.0版本就開始支持外接存儲設備,如MMC,CF卡等,這讓它強大的擴展能力得以充分發揮,使存放更多的軟體以及各種大容量的多媒體文件成為了可能。
Symbian按版本來分,繼2005年二月Symbian推出一款新的手機操作系統軟體OSv9.0,到目前為止已先後有了6.0、6.1、7.0、7.0s、8.0、9.0幾種版本。1999年3月Symbian推出了Symbian5.0操作系統,它的主要內核集合了網路,無線文字,電子郵件,名片薄以及個人信息助理,同時還具有支持標准網路頁面的瀏覽器,配合java語言的支持,使得Symbian可以運行小型的應用程序。不過這個版本採用的機型甚少,基本上與EPOC沒有太多的差別。
Symbian 6.0則在5.0的基礎上增加了,GPRS、WAP1.2瀏覽器以及藍牙技術的支持,用戶可以運行第三方基於C++和J2ME開發的程序。而Symbian 6.1則是和Symbian 6.0相比主要增加了對USB的支持。Symbian 6.0的主要特點是: 支持語音通話和數據通信 ,支持Bluetooth和WAP ,配備安全性功能(SSL,HTTPS,WTLS) ,採用16bit Unicode,支持多語言顯示 ,採用「PersonalJava 3.0」和「JavaPhone 1.0」 。
Symbian 7.0則支持多模式和3G手機(專區),可以讓製造商們可以面向全世界推出可以運行於所有網路之上的Symbian OS手機,而且可以不對代碼進行重大改動的情況下就可以重新使用許多到目前為止已有的軟體應用。7.0包含一些新的通訊、消息、聯網和應用開發技術,並對一些與安全和認證相關的功能進行了改進。Symbian OS 7.0的其他功能包括:支持靈活的用戶界面,例如Nokia的Series 60;支持幾種音頻/圖像格式和許多面向游戲開發人員的API;全力的加密和認證管理,基於安全通訊協議(包括HTTPS、WTLS和SSL)及認證的應用安裝;和Over-the-air(OTA)SyncML同步支持。
2004年2月,Symbian在授權LG等公司的時候,發布了Symbian8 .0版本。該版本改善了實時系統性能,提高了原有操作系統的兼容能力。此外,Symbian OS 8.0的軟體工具改進了遠程接入控制系統功能,運用調節裝置消除手機用戶使用增值服務時會受到的干擾。這個系統包含了絕對現代化的多媒體和Java設備,支持多種標准,其中包括JSR118, CLDC1.1 (JSR139),MobileMedia (JSR135),3D圖像數據(JSR184), JTWI 1.0 c(JSR185)。最後,新版OS還支持SDIO。
2005年二月,英國著名手機軟體製造商Symbian推出一款新的手機操作系統軟體OSv9.0,它支持更高像素數碼相機與三維游戲動畫。該操作系統軟體對運行環境要求較高,到目前為止運行在由英國晶元開發商ARM提供的快速處理器晶元,並且需要相關設計與其它工具的支持來幫助手機生產商在開發其它版本時能夠節約時間和降低成本。該軟體可以處理200萬像素的數字圖片,甚至能夠向無線耳機傳送立體聲音樂,更可喜的是,它不需要同步軟體就能夠從PC上導出MP3文件。
Series60是智能手機中應用最廣泛的系統版本。Series60系統還分為6.0 OS、7.0 OS和8.0 OS三個版本。區別Series60的最直觀因素在於屏幕的解析度,Series60支持的解析度為176*208像素,但以後S60還會支持240*320像素、352*416像素等。S60是擁有最多第三方軟體或游戲的界面。
識別Series80界面最簡單的辦法就是看手機是否支持全鍵盤,例如諾基亞高端系列的9210、9300甚至9500,都採用全鍵盤的。識別Series90的最簡便方法是:會採用觸摸屏幕,解析度也高達640*320像素。Series90應該是手機游戲、娛樂的最強平台,但因為採用Series90界面的手機型號太少,第三方軟體的支持很少,所以S60依舊是玩家首選。
S40或S60是指諾基亞手機的上層平台。S60都是智能手機,所用底層操作系統是Symbian。諾基亞128*128屏幕都是S40 1.0。而128*160是S40 2.0。
另外S40中,3100支持javaMIDP 1.0,所以最大支持64KB的java;6230支持java MIDP 2.0,所以最大支持128KB的java40和60,包括90,還有以前的30,都是針對與nokia不同的操作系統而言40,是nokia自行研製的手機操作系統,面對於中低端客戶,支持kjava的開發,其處理器效率不高,內存偏低,屏幕大小128*128。
S60,是基於Symbian操作系統,也就是以前的epoc,其處理器為arm9,處理效率很高,內存頗大,屏幕大小為208*176同時支持kjava和C++的開發90,屬於手持式設備,也是Symbian 操作系統但是功能強勁,等同於一個PDA了。
其實技術來上說,S40跟S60是區別在系統平台上,就好像WIN98跟WIN2000,但手機不像PC,屏幕大小的確是個關口,以致於平台不容易做到向下兼容,但有的游戲也同樣做出不同版本來的。
S40比S60不單單是屏幕上的差距,更大的是性能上的差距,一般來說,S60開發出來的游戲質量都比S40高好多,但可惜,S60比S40的機子又貴上了很多。 由於Linux具有源代碼開放、軟體授權費用低、應用開發人才資源豐富等優點,便於開發個人和行業應用。這一特點非常重要,因為豐富的應用是智能手機的優越性體現和關鍵賣點所在。從應用開發的角度看,由於Linux的源代碼是開放的,有利於獨立軟體開發商(ISV)開發出硬體利用效率高、功能更強大的應用軟體,也方便行業用戶開發自己的安全、可控認證系統。
採用Linux操作系統的理由是降低智能手機的生產成本。Linux開發起來最大的特點是從根本上開放源代碼,與其他系統相比,採用開放源代碼的Linux手機操作系統能夠大大降低成本。而且開放源代碼還有一個好處是允許手機製造商根據實際情況,有針對性地開發適合自己手機的Linux操作系統,這樣既能讓自己的產品有特色,又能避免受制於人,還能夠滿足用戶多方面的應用。手機的應用就由通話和簡單的郵件傳輸,發展到Web瀏覽和拍照攝影,照片編輯,動畫播放等多個方面,這樣一來,手機軟體的開發規模是5倍以上。基於這個原因,開發Linux OS,開發者教育等各方面的成本就削減了不少,從而上市的產品便會更具競爭力。
Linux操作系統在使用中的優點也是十分明顯的。首先,對於消費來說,採用的應用於智能手機上的Linux操作系統和我們常說的應用於電腦上的Linux操作系統是一個系統,而且都是全免費操作系統。在操作系統上的免費,就等於節省了產品的生產成本,附加到消費者身上的也就少了,給大家帶來了實惠。Linux操作系統系統資源佔用率較低,而且性能比較穩定,這都是大家公認的。使用起來能帶來急速體驗,在同硬體配置上,能獲得其他智能手機操作系統得不到的快樂。如果以Linux平台的系統資源佔用程度同體積龐大。
早在2000年,韓國公司Palm就推出了第一台採用Linux的Tynux手機。2003年1月,NEC宣布將在其手機中使用Linux操作系統,代表著Linux成功進軍手機領域。摩托羅拉A760卻搶現發布搶先,進入市場,搶了NEC頭籌,隨後,採用Linux手機智能系統得手機開始多起來了,韓國手機巨頭三星,LG也先後加入了Linux手機智能系統陣營。就國產手機而言,各大國內廠商推出智能手機開始升溫到已經進入一個飛速發展的階段。
列入國家863計劃的中興智能手機e3的推出,代表著國產手機在Linux智能手機上的最高成就。國產手機能否借Linux打個翻身仗,還是個疑問。支持LINUX操作系統的機型:摩托羅拉A768I、摩托羅拉A780、飛利浦968、海爾N60、中興E3。
由於智能手機結合了強大的硬體運行能力以及開放的軟體操作系統,因此無論是娛樂還是商務應用,智能手機的功能都能夠在強大的第三方軟體的支持下獲得無限的擴展。因此,在未來的手機市場上,智能手機將引領整個手機發展的潮流,而不是局限於高端手機。手機未來的趨勢是開放系統會逐步地擠掉封閉系統和專有系統。 Windows Mobile包括Pocket PC、SmartPhone以及Pocket PC Phone三大平台體系,Windows Mobile具有錄音、音視頻播放等多媒體功能。由於大多數機型支持彩色顯示,因此耗電量極大,並且由於Windows CE本身對於資源的巨大吞噬作用,所以在能耗方面Windows CE系統要明顯遜於Palm操作系統。在功能擴展方面微軟比較傾向於集成使用,用戶可以根據自己的需要增加內存、攝像頭、數據機等設備。
針對中國用戶而言,Windows Moblie的中文操作系統已經比較成熟。到目前為止,摩托羅拉、ARM、ST、NeoMagic、德州儀器、Intel、三星、現代都已經生產了針對該系統的處理器;有數十家製造商生產基於Smartphone和Pocket PC技術的移動設備,有35家運營商分銷這些產品。
SmartPhone手機源於Windows Mobile家族,Windows Mobile家族主要包括 Pocket PC、Pocket PC Phone Edition、Smartphone、 Portable Media Center這4個系列產品。
為了積極進入更加廣闊的移動通信市場,微軟把在PDA 市場所使用的 Pocket PC操作系統,改良加入電話的功能,成為新型的 Pocket PC Phone,並在2002年時積極的向手機市場邁進,推出基於 Smartphone 的手機系統。
雖然Smartphone和Pocket PC Phone手機都是基於微軟WindowsCE系統的產品,由於在基本設計出發點不同,所以操作、應用程序上也有所不同。它們的軟體不能通用,操作上PPC手機一般是採用觸摸屏操作,而Smartphone手機只能使用手機的按鍵來操作。
雖然PPC手機的功能十分強大,但由於它高昂的價格和碩大的體積不是每個用戶都能夠認可的,SmartPhone的出現就是為了讓智能手機更加大眾化,以類似於普通手機的體積和相對低廉的價格使用戶感受到智能手機給我們到來的便利,當然也為微軟公司獲得更多的利潤。
Smartphone手機中使用的操作系統有Smartphone2002和Smartphone2003兩個版本,這兩個版本實質上並沒有太大的變化,只是2003系統增加了對新硬體技術的支持,就像Windows2000和XP這種版本的升級相似。到目前為止我們市場上出售的的SmartPhone手機主要是採用的SmartPhone2003操作系統。 BlackBerry.nterpriseSolution是一種領先的無線解決方案,可供移動專業人員用來實現與客戶、同事和業務運作所需的信息連接。這是一種經證明有效的優秀平台,它為世界各地的移動用戶提供了與大量業務信息和通信的安全的無線連接。
電子郵件-BlackBerry安全無線延伸移動商業用戶其的企業電子郵件帳戶、即使他們在辦公室外、也可輕松處理電郵、就像從沒有離開辦公桌。用戶可以在旅途中發送、接收、歸檔和刪除郵件、並閱讀電郵附件、支持格式:如Microsoft.Word、MicrosoftExcel、MicrosoftPowerPoint.、Adobe.PDF、Corel.WordPerfect.、HTML和ASCII)。BlackBerry解決方案的「始終在線」推入技術可以自動傳遞電郵、用戶不需要執行任何操作就可接收通信。 HOPEN產品解決方案——智能手機,HMAP(Hopen Mobile Application Platform)是基於嵌入式實時操作系統的智能手機解決方案,可以廣泛應用於普通手機、PDA手機、智能手機、遠程信息處理等無線終端設備。
Ⅳ 用Android2.2的Skia庫的drawtext為什麼顯示不出文字
將Android.mk文件中的內容(頭文件來源於svn https://skia。googlecode。com/svn/trunk).
LOCAL_CXXFLAGS :=
LOCAL_C_INCLUDES := \
E:/NDKr5/sources/SKIA/include/core \
E:/NDKr5/sources/SKIA/include/config \
E:/NDKr5/sources/android/frameworks/base/include \
E:/NDKr5/sources/android/system/core/include \
E:/NDKr5/sources/android/frameworks/base/core/jni/android/graphics \
E:/NDKr5/sources/android/dalvik/libnativehelper/include
改成:(頭文件目錄在android2.2 (froyo)源代碼的skia中.)
E:/NDKr5/sources/android/external/skia/include/core \
E:/NDKr5/sources/android/external/skia/include/config \
E:/NDKr5/sources/android/frameworks/base/include \
E:/NDKr5/sources/android/system/core/include \
E:/NDKr5/sources/android/frameworks/base/core/jni/android/graphics \
E:/NDKr5/sources/android/dalvik/libnativehelper/include
就可以了.
已經在模擬器和真機上驗證了.
Ⅵ Android操作系統是基於Linux Kernel是什麼意思
每一個操作系統都有不同的內核。像Windows每個版本的內核都不同,而Mac OX用的是Unix的內核,Linux用的是Linux內核。而Android操作系統的內核是Linux,但是他不是一種Linux操作系統。
Ⅶ 安卓系統有何優劣
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應用安裝時的許可權提示界面安裝應用時,在檢查程序簽名提及的許可權,且經過用戶確認後,軟體包安裝器會給予應用許可權。從用戶角度看,一款Android應用通常會要求如下的許可權:
撥打電話、發送簡訊或彩信、修改/刪除SD卡上的內容、讀取聯系人信息、讀取日程信息,寫入日程數據、讀取電話狀態或識別碼、精確的(基於GPS)地理位置、模糊的(基於網路獲取)地理位置、創建藍牙連接、對互聯網的完全訪問、查看網路狀態,查看WiFi狀態、避免手機待機、修改系統全局設置、讀取同步設定、開機自啟動、重啟其他應用、終止運行中的應用、設定偏好應用、震動控制、拍攝圖片等。
一款應用應該根據自身提供的功能,要求合理的許可權。用戶也可以分析一款應用所需許可權,從而簡單判定這款應用是否安全。如一款應用是不帶廣告的單機版,也沒有任何附加內容需要下載,那麼它要求訪問網路的許可權就比較可疑。
很多玩家用戶可能會奇怪:「為什麼 Android 會用甜點作為它們系統版本的代號?」這個命名方法開始於 Andoird 1.5 發布的時候。作為每個版本代表的甜點的尺寸越變越大,然後按照26個字母數序:紙杯蛋糕,甜甜圈,松餅,凍酸奶,姜餅,蜂巢。
Ⅷ 安卓系統英文是什麼
Android 谷歌開發。
Ⅸ windows中type命令的源碼是什麼
DOS系統命令都能用輸入command能查看面命令 環境變數PATH面應用程序名作命令用
面總結些東西內容太
關某命令詳細信息請鍵入 HELP 命令名
XP.CMD命令全
關某命令詳細信息請鍵入 HELP 命令名ASSOC 顯示或修改文件擴展名關聯AT 計劃計算機運行命令程序ATTRIB 顯示或更改文件屬性BREAK 設置或清除擴展式 CTRL+C 檢查CACLS 顯示或修改文件訪問控制列表(ACLs)CALL 另批處理程序調用CD 顯示前目錄名稱或其更改CHCP 顯示或設置代碼頁數CHDIR 顯示前目錄名稱或其更改CHKDSK 檢查磁碟並顯示狀態報告CHKNTFS 顯示或修改啟間磁碟檢查CLS 清除屏幕CMD 打另 Windows 命令解釋程序窗口COLOR 設置默認控制台前景背景顏色COMP 比較兩或兩套文件內容COMPACT 顯示或更改 NTFS 區文件壓縮CONVERT FAT 卷轉換 NTFS您能轉換前驅器COPY 至少文件復制另位置DATE 顯示或設置期DEL 刪除至少文件DIR 顯示目錄文件目錄DISKCOMP 比較兩軟盤內容DISKCOPY 軟盤內容復制另軟盤DOSKEY 編輯命令行、調用 Windows 命令並創建宏ECHO 顯示消息或命令顯打或關ENDLOCAL 結束批文件環境更改本化ERASE 刪除至少文件EXIT 退 CMD.EXE 程序(命令解釋程序)FC 比較兩或兩套文件並顯示同處FIND 文件搜索文字字元串FINDSTR 文件搜索字元串FOR 套文件每文件運行指定命令FORMAT 格式化磁碟便跟 Windows 使用FTYPE 顯示或修改用於文件擴展名關聯文件類型GOTO Windows 命令解釋程序指向批處理程序某標明行GRAFTABL 啟用 Windows 圖像模式顯示擴展字元集HELP 提供 Windows 命令幫助信息IF 執行批處理程序條件性處理LABEL 創建、更改或刪除磁碟卷標MD 創建目錄MKDIR 創建目錄MODE 配置系統設備MORE 顯示結屏幕MOVE 文件目錄移另目錄PATH 顯示或設置執行文件搜索路徑PAUSE 暫停批文件處理並顯示消息POPD 原 PUSHD 保存前目錄值PRINT 列印文本文件PROMPT 更改 Windows 命令提示符PUSHD 保存前目錄其進行更改RD 刪除目錄RECOVER 問題磁碟恢復讀信息REM 記錄批文件或 CONFIG.SYS 注釋REN 重命名文件RENAME 重命名文件REPLACE 替換文件RMDIR 刪除目錄SET 顯示、設置或刪除 Windows 環境變數SETLOCAL 始批文件環境更改本化SHIFT 更換批文件替換參數位置SORT 輸入進行類START 啟另窗口運行指定程序或命令SUBST 路徑跟驅器號關聯TIME 顯示或設置系統間TITLE 設置 CMD.EXE 窗口標題TREE 圖形模式顯示驅器或路徑目錄結構TYPE 顯示文本文件內容VER 顯示 Windows 版本VERIFY 告訴 Windows 否驗證文件否已確寫入磁碟VOL 顯示磁碟卷標序列號XCOPY 復制文件目錄樹
appwiz.cpl------------添加刪除程序
control userpasswords2--------用戶帳戶設置
cleanmgr-------垃圾整理
CMD--------------命令提示符作 Windows 附件PingConvert 些能圖形環境 使用功能要藉助完
cmd------jview察看Java虛擬機版本
command.com------調用則系統內置 NTVDM DOS虛擬機完全類似 Virtual PC 虛擬環境系統本身聯系我命令提示符運行 DOS 程序實際 自轉移 NTVDM虛擬機 CMD 本身沒關系
calc-----------啟計算器
chkdsk.exe-----Chkdsk磁碟檢查
compmgmt.msc---計算機管理
conf-----------啟 netmeeting
control userpasswords2-----User Account 許可權設置
devmgmt.msc--- 設備管理器
diskmgmt.msc---磁碟管理實用程序
dfrg.msc-------磁碟碎片整理程序
drwtsn32------ 系統醫
dvdplay--------啟Media Player
dxdiag-----------DirectX Diagnostic Tool
gpedit.msc-------組策略編輯器
gpupdate /target:computer /force 強制刷新組策略
eventvwr.exe-----事件查看器
explorer-------打資源管理器
logoff---------注銷命令
lusrmgr.msc----本機用戶組
msinfo32---------系統信息
msconfig---------系統配置實用程序
net start (servicename)----啟該服務
net stop (servicename)-----停止該服務
notepad--------打記事本
nusrmgr.cpl-------同control userpasswords打用戶帳戶控制面板
Nslookup-------IP址偵測器
oobe/msoobe /a----檢查XP否激
perfmon.msc----計算機性能監測程序
progman--------程序管理器
regedit----------注冊表編輯器
regedt32-------注冊表編輯器
regsvr32 /u *.dll----停止dll文件運行
route print------查看路由表
rononce -p ----15秒關機
rsop.msc-------組策略結集
rundll32.exe rundll32.exe %Systemroot%System32shimgvw.dll,ImageView_Fullscreen----啟空白Windows 圖片傳真查看器
secpol.msc--------本安全策略
services.msc---本服務設置
sfc /scannow-----啟系統文件檢查器
sndrec32-------錄音機
taskmgr-----任務管理器(適用於2000/xp/2003)
tsshutdn-------60秒倒計關機命令
winchat--------XP自帶區域網聊
winmsd---------系統信息
winver-----顯示About Windows 窗口
wupdmgr-----------Windows Update
一,編譯之前的准備。
1) 了解代碼組織結構。
Chrome source非常龐大,並且在其主目錄下還包含有工具和組件,任何一個工具和組件也附帶有其源代碼。首先得熟悉這些源代碼的組織結構,在中包含如下子目錄:releases,曾經發布過的chrome源代碼的正式版本;trunk,當前最新的源代碼。由於releases中的代碼比較舊,這里就不做說明了,只說明trunk的結構。在trunk下面有3個重要的目錄,deps包含了chrome編譯和運行所需要的全部組件的代碼。src裡麵包含的則是chrome的主程序的代碼,tools包含的是下載和配置編譯所需要的第三方工具的壓縮包和源代碼,其中就有svn和python這2個比較重要的工具,後面再詳細介紹。暫時做這樣一個簡單的介紹,因為其組織結構比較負責,以後再作補充斧正。
2)如何下載和同步源代碼。
首先談談下載:
1,最簡單的方法是從chrome官網上直接下載源代碼壓縮包,地址是。
2,或者採用svn從trunk/src這個地方heckout,這要求你先在本地建一個源代碼的主目錄。
3,另外一個辦法則是採用google提供的一個部署工具depot_tools。雖然這幾種辦法都可下載完整的源代碼,但目前的情況是:chrome基於Visual Stdio 2005 進行編譯,如果順利完成編譯工作,自然少不了sln文件,較早的源代碼中包含有現成的sln和vcproject文件,但後來做了修改,這些文件被拋棄掉,Google自己開發了一種腳本工具叫做GYP,這個工具採用python編寫,GYP採用了自定義的一套規則,用於生成各種工程文件。而關鍵的python則包含於depot_tools中,因此不論採用什麼方法下載的代碼,都得下載depot_tools這個工具,以獲得必須的工程文件。
depot_tools位於 trunk/tools 下面,包括一個目錄和一個zip格式的壓縮包。
3)關於編譯器
前面提到Chrome採用Visual Stdio 2005進行編譯,根據的說明,需進行如下操作正常編譯
a, 安裝Visual Studio 2005.
b, 安裝Visual Studio 2005 Service Packe 1.
c, 安裝Visual Studio Hotfix 947315.
d, 如果是vista系統,還需安裝Visual Studio 2005 Service Packe 1 Update for Windows Vista.
e, 安裝Windows 2008 SDK,如果是Visual Studio 2008則不需要這一步。
f, 配置Windows 2008 SDK,使2008 SDK成為首選開發庫,以獲得一些新功能和特性。辦法是在開始->程序->Microsoft Windows SDK v6.1 > Visual Studio Registration > Windows SDK Configuration Tool,選擇make current按鈕。也可以在VS裡面手動配置include和libary路徑,效果是一樣的。
二,如何配置工程文件
1,如果是採用depot_tools,那麼從代碼下載到生成sln文件會自動完成。其步驟是
(1)下載depot_tools到本地存儲,假設位於d:/depot_tools.
(2)將d:/depot_tools添加到系統環境變數中。
(3)創建一個源代碼根目錄,假設為 d:/chrome,目錄不得包含空格。
(4)在命令行下切換當前目錄到d:/chrome。
(5)執行命令 gclient config trunk/src ,該命令會首先下載svn和python分別到d:/depot_tools/svn_bin和d:/depot_tools/python_bin。
(6)執行命令 gclient sync 這個命令會調用svn同步源代碼。這個過程會比較漫長。全部完成之後全部源代碼就保存在d:/chrome裡面。未編譯的代碼大約有4個G左右,過程將十分漫長。這樣獲得的源代碼已經包含所有的工程文件,可直接打開。
重點說明一下gclient,它實際上是一個批處理文件,它主要做了如下一些事情,首先設置環境變數,如代碼根目錄,工具根目錄等。其次調用win_tools.bat從伺服器下載svn和python。最後調用python.exe對Chrome.gyp進行解析生成所有工程文件。
另外需要說明的是,gclient sync的過程非常漫長,根據命令行的提示來看總共需要同步67個項目(不是工程),期間可能會因為一些原因導致錯誤而退出這個過程,需要繼續調用sync。比如網路出現故障svn會多次進入sleep狀態然後重試,如果多次失敗就會報錯退出,還有的情況是某些子目錄的屬性問題無法同步,可根據提示進行操作。還有個目前新出現的問題,下面2個目錄「src/webkit/data/layout_tests/LayoutTests」和「src/third_party/WebKit/LayoutTests」的源代碼是從src.webkit.org簽出來的,但是這個網站目前存在問題無法簽出代碼, 需要屏蔽掉這2個目錄,由於裡面是測試代碼,即使丟棄也不會影響整個工程的編譯,方法是打開trunk下面的.gclient文件,向裡面添加如下內容
"custom_deps" : {
"src/webkit/data/layout_tests/LayoutTests":None,
"src/third_party/WebKit/LayoutTests":None腸川慣緞甙等軌勸憨滑,
},
這樣svn就能完成代碼的同步了。最後gclient會調用depot_tools/python_bin/python.exe 對 src/build/gyp_
chromium進行處理,這樣就得到了所有的sln和vcproject文件。
2,如果是下載的代碼壓縮包或者checkout的代碼,代碼目錄裡面沒有sln文件,這個時候需要調用命令行進入源代碼根目錄,然後執行命令 gclient runhooks --force,命令執行後會直接對Chrome.gyp進行解析,生成sln文件。
在實際下載過程中,最開始的時候我用TortoiseSVN從trunk/src checkout源代碼,但是得到的代碼只有幾百兆,執行gclient runhooks --force命令後也沒有找到sln文件,具體原因未知,不建議使用此方式。而直接下載代碼壓縮包的方式沒有嘗試過,不知道是否可行。因此最穩妥的方法還是使用depot_tools來部署和處理源代碼。
三 編譯工程
啟動Visual Studio 2005打開 src/chrome/browser/chrome.sln,或者打開src/build/all.sln,如果打開的是chrome.sln裡麵包含480個工程,而all.sln則包含507個工程,一些09年的編譯說明提到有300左右的工程,可見chrome的代碼變動比較大。對整個解決方案進行編譯,打開需要2個小時才能完成編譯,視硬體環境而定,內存越大越快,推薦4G以上內存,酷睿2核或者4核。編譯完成以後據說會佔用30G的空間。編譯後的文件位於 d:/chorme/chrome/debug 目錄或者 d:/chorme/chrome/release目錄下。
四 chrome涉及的開源項目
Chrome 採用了很多開源項目,這里把它們列出來以備後用,目前Chrome涉及25個開源代碼:
1、Google Breakpad
/src/breakpad
開源的跨開台程序崩潰報告系統。
2、Google URL
/src/googleurl
Google小巧的URL解析整理庫。
3、Skia
/src/skia
矢量圖引擎。
4、Google v8
/src/v8
Google開源的JavaScript引擎。V8實現了ECMA-262第三版的ECMAScript規范,可運行於Windows XP 和 Vista, Mac OS X 10.5 (Leopard), 及 Linux等基於IA-32 或 ARM 的系統之上。V8可單獨運行也可嵌入到任何C++程序中。
5、Webkit
/src/webki
開源的瀏覽器引擎
6、Netscape Portable Runtime (NSPR)
/src/base/third_party/nspr
Netscape Portable Runtime (NSPR) 提供了系統級平台無關的API及類似libc的函數。
7、Network Security Services (NSS)
/src/base/third_party/nss
Network Security Services (NSS) 一套用於支持伺服器端與客戶端安全開發的跨平台函數庫。程序通過NSS可支持SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 認證及其它一些安全標准。
8、Hunspell
/src/chrome/third_party/hunspell
Spell checker and morphological analyzer library and program designed for languages with rich morphology and complex word compounding or character encoding.
9、Windows Template Library
/src/chrome/third_party/wtl
用於開發Windows程序與UI組件的C++ library。WTL擴展了ATL (Active Template Library) 並提供一套用於controls, dialogs, frame windows, GDI objects等開發的類。
10、Google C++ Testing Framework
/src/testing/gtest
Google用於編寫C++測試的基於xUnit架構的框架,可用於多種平台上:Linux, Mac OS X, Windows, Windows CE, and Symbian。支持自動測試發現,有一套豐富的Assertions斷言,用於可自定義斷言,death tests, fatal and non-fatal failures, various options for running the tests, and XML test report generation.
11、bsdiff 與 bspatch
/src/third_party/bsdiff 及 /src/third_party/bspatch
bsdiff 與 bspatch 用於為二進制文件生成補丁。
12、bzip2
/src/third_party/bzip2
bzip2使用Burrows-Wheeler block sorting text compression 演算法與Huffman編碼壓縮文件。
13、International Components for Unicode (ICU)
/src/third_party/icu38
ICU是一套成熟並被廣泛使用的C/C++ 及 Java 庫,可為軟體提供Unicode與全球化支持。
14、libjpeg
/src/third_party/libjpeg
用於處理JPEG (JFIF)圖像格式的庫。
15、libpng
/src/third_party/libpng
PNG圖像格式庫。支持絕大部分的PNG特性,可擴展。已經被廣泛地使用了13年以上了。
16、libxml
/src/third_party/libxml
C語言的XML解析庫。
17、libxslt
/src/third_party/libxslt
C語言的XSLT庫。
18、LZMA
/src/third_party/lzma_sdk
LZMA為7-Zip軟體中7z格式壓縮所使用的壓縮演算法,有很好的壓縮效果。
19、stringencoders
/src/third_party/modp_b64
一系列高性能的c-string轉換函數,比如:base 64 encoding/decoding。通常比其標准實現快兩倍以上。
20、Netscape Plugin Application Programming Interface (NPAPI)
/src/third_party/npapi
多種瀏覽器使用的跨平台插件架構。
21、Pthreads-w32
/src/third_party/pthread
用於編寫多線程程序的API
22、SCons - a software construction tool
/src/third_party/scons
開源的軟體構建工具——下一代的編譯工具。可以認為SCons是改進過的跨平台配上autoconf/automake與ccache的Make工具的子系統。
23、sqlite
/src/third_party/sqlite
大名鼎鼎的嵌入式資料庫引擎。自管理、零配置、無需伺服器、支持事務。
24、TLS Lite
/src/third_party/tlslite
SSL 3.0, TLS 1.0, and TLS 1.1的Python免費實現庫。TLS Lite支持這些安全驗證方式:SRP, shared keys, and cryptoIDs in addition to X.509 certificates。註:Chrome並不包涵Python。TLS Lite用於Chrome開發過程中的代碼覆蓋、依賴檢查、網頁載入時間測試及生成html結果比較等。
25、zlib
/src/third_party/zlib
zlib為一套用於任意平台與機器的無損數據壓縮的庫,它免費、自由、無任何法律專利問題。
Ⅹ 蘋果手機是什麼系統,安卓系統又是什麼
蘋果是自己開發的IOS系統,安卓是谷歌推出的用於移動設備的系統。
iOS是由蘋果公司開發的移動操作系統。蘋果公司最早於2007年1月9日的Macworld大會上公布這個系統,最初是設計給iPhone使用的,後來陸續套用到iPod touch、iPad上。
安卓(Android)是一種基於Linux內核(不包含GNU組件)的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
iOS系統的優勢
1、軟體與硬體整合度高
iOS系統的軟體與硬體的整合度相當高,使其分化大大降低。這樣也增加了整個系統的穩定性,手機很少出現死機、無響應的情況。
2、界面美觀、易操作
蘋果在界面設計上投入了很多精力,無論是從外觀性還是到易用性,iOS都致力於為使用者提供最直觀的用戶體驗。
3、安全性強
蘋果對iOS生態採取了封閉的措施,並建立了完整的開發者認證和應用審核機制,因而惡意程序基本上沒有登台亮相的機會。iOS設備使用嚴格的安全技術和功能,並且使用方便。
4、應用數量多、品質高
iOS平台擁有數量龐大的app和第三方開發者,幾乎每類app都有數千款。