Android Internals.A第一章

來源:互聯網
上載者:User

標籤:sys   keychain   預設   重要   kernel   splay   量化   sed   二進位   

這一章主要是介紹安卓從Linux分支而來卻又具有自己特有特性如Dalvik,framworks,JNI,bionic等。

 

 

 

  • 1.1  主要是安卓的發展曆史 每個版本的變更
 

 

wiki也有相應的更新  目前android已更新到8.1(注意每個版本代表性的更新特性)https://zh.wikipedia.org/wiki/Android 可以看到6.0和7.0已經佔到了約50%.  
  • 1.2   安卓和linux在體繫結構上的區別(重點)

 

可以明顯的看到區別在於  GlibC替換成了Bionic和HAL (主要是為了避開開源協議) 然後Android刪除了Linux上特有的那些特有的X-Windows和Gnome/KDE/etc等,增加了Dalvik  JNi Frameworks等  
  1. Android的Frameworks層
 安卓的很大一部分成功來源於他豐富的framworks,不然它也只是一個簡單的嵌入式裝置。 同時Android也允許開發人員使用更進階別的JAVA ,而不是低層級的C/C++;主要原因是得益於android豐富的API 通過Java的包命名方式,Android架構被分為獨立的命名空間, Table 1-2: The Android Frameworks(API 1~22)
Package Name API Contents
android.app 1 Application Support
android.content Content providers  
android.database Database support, mostly SQLite  
android.graphics Graphics support  
android.opengl OpenGL Graphics support  
android.hardware Camera, input and sensor support  
android.location Location support  
android.media Media support  
android.net Network support built over java.net APIs  
android.os Core OS Service and IPC support  
android.provider Built-in Android content-providers  
android.sax SAX XML Parsers  
android.telephony Core Telephony support  
android.text Text rendering  
android.view UI Components (similar to iOS‘s UIView)  
android.webkit Webkit browser controls  
android.widget Application widgets  
android.speech 3 Speech recognition and Speech-to-Text
android.accounts 4 Support for account management and authentication.
android.gesture Custom gesture support  
android.accounts 5 User account support
android.bluetooth Bluetooth support  
android.media.audiofx 9 Audio Effects support
android.net.sip Support for VoIP using the Session Initiation Protocol (RFC3261)  
android.os.storage Support for Opaque Binary Blobs (OBB)  
android.nfc Support for Near Field Communication  
android.animation 11 Animation of views and objects
android.drm Digital Rights Management and copy protection  
android.renderscript RenderScript (OpenCL like computation language)  
android.hardware.usb 12 USB Peripheral support
android.mtp MTP/PTP support for connected cameras, etc  
android.net.rtp Support for the Real-Time-Protocol (RFC3501)  
android.media.effect 14 Image and Video Effects support
android.net.wifi.p2p Support for Wi-Fi Direct (Peer-To-Peer)  
android.security Support for keychains and keystores  
android.net.nsd 16 Neighbor-Service-Discovery through Multicast DNS (Bonjour)
android.hardware.input Input device listeners  
 
Package Name API Contents
android.hardware.display 17 External and virtual display support
android.service.dreams "Dream" (screensaver) support  
android.graphics.pdf 19 PDF Rendering
android.print[.pdf] Support for external printing  
android.app.job 21 Job scheduler
android.bluetooth.le   Bluetooth Low-Energy (LE) support
android.hardware.camera2   The new camera APIs
android.media.[browse/projection/session/tv]   Media browsing and TV support
android.service.voice   Activation by "hot words" (e.g. "OK Google")
android.system   uname(), poll(2) and fstat[vfs](2)
android.sHUYLFHFDUULHU 22 SMS/MMS support (CarrireMessageingService)
  frameworks是以jar包的形式存在於裝置的/system/framwork 下  最終被打包成boot.art檔案。         2.Dalvik虛擬機器     隨著本書的印刷,Dalvik正在被Android RunTime(ART)所取代, 如本章後面所述。然而,與普遍的看法相反,這並不意味著 Dalvik正在消失:只有Just-In-Time(JIT)編譯方面 取而代之,但檔案格式(DEX)仍然非常活躍,關鍵架構也是如此 概念。因此,我們在第二卷中詳細討論了Dalvik DnG ART。          3.JNI    雖然Android程式在虛擬機器中運行,但通常為了訪問硬體或者其他裝置需要使用JNI在程式碼中建立庫。        Google 提供了NDK供我們使用。在處理圖形介面和對抗反編譯時間很有效。同時為了適配Arm intel自己做了一個模擬器 Intel provides a closed-source ARMemulation called Houdini (extending Dalvik/ART, asdiscussed later in Volume II) as part of theirAndroid distribution. This emulator, (along with afew minor modifications in Dalvik), enables ARMnative libraries to work on Intel architectures.         4.二進位檔案    多見於/system/bin或者/system/xbin目錄下 

 

 編譯android源碼時會使用NDK-toochains來交叉編譯 

 

      5. Bionic  Android使用自己的C運行庫,Bionic Bionic是開源的,但是使用aBSD許可證(這對於第三方連結更加寬容)以及Android的混合體自己的執照。      6. 增加的特性 拋開法律問題,bionic比GLibC更輕量化,對於Android來說效率更高。 bionic的系統調用存放在 bionic/libc/SYSCALLS.TXT,當然也有些系統調用是不匯出的。 不支援System V IPC,有限的Pthread功能:一方面,Pthread支援內建於Bionic有限的C ++支援:雖然支援C ++(的確,大部分Android的代碼都是用C ++編寫),例外情況不是。同樣,標準模板庫(STL)不是包括,但沒有限制手動連結它(一個連接埠可以找到外部/ stlport項目)。  增加了功能:系統屬性:屬性是Android的獨特功能,它允許系統以及提供各種配置和巨集指令引數的應用程式在一個簡單的鍵/值儲存中。這與Java屬性的概念類似(實際上是通過Java的System.properties可訪問)。 Android嚴重依賴於此機制,通過共用記憶體地區提供,可訪問且唯讀到系統上的所有進程,但只能通過/ init進行設定。 寫入程式碼了UID/GID的實現:而不是依賴於password和group. 
內建DNS解析:Bionic整合了DNS名稱到IP解析代碼(一般在libresolv.so中)。  硬式編碼服務和協議:徹底解決libresolv.so。移除了*nux上部分對檔案和協議的支援   7.移植中的挑戰:   在移植中主要的問題點在Bionic,雖然在某種程度上於GUN libc相容,但是上一些功能如notably multithreading
,則不會移植。Android 與Linux有著相同的系統調用,靜態二進位檔案完全相容。  除了bionic之外Android還包含了一些其他重要運行時的庫來支援Dalvik,frameworks和系統進程。 
system / core中的庫通常提供核心Androidisms的封裝,或實現使用者模式中的附加功能,包括: 

 

看到這個zipfile的時候感覺這些庫都可以來fuzz下 看能不能找出些問題

 

frameworks/ provide 為Android架構提供本機支援服務。

  

這些都是病毒常注入的系統庫 如libandroid_runtime.so

 

 

 額外的本地庫

 

Android有150多個額外的本地庫一旦部署在裝置上,外部庫與很大程度上無法區分與AOSP的區別  他們都在system/lib目錄下(有些也在/verndor/lib)


硬體抽象層(Hardware Abstraction Layer)
  由於Android要運行在各種不同的裝置上,底層的硬體規範件差距肯呢個很大,所以android定義了(HAL)統一標準來提供給硬體供應商自由的創造他們在核心模式下的驅動程式
他只需要一個二進位檔案放置與system / lib / hw目錄下 libhareware.so會主動載入他們(我們編譯安卓系統刷機時也會需要下載對應裝置的驅動放於指定的目錄下)


硬體抽象層自然是Android的一個非常重要的方面 - 都是因為它代表了與Linux的分歧,並且因為它有助於支援大量Android裝置。

 

 

The Linux kernel

Linux核心由於其開放原始碼和免費許可證性質,提供了極好的效能Android *基板。
從Linus Torvalds的初始版本開始核心繼續以驚人的速度發展,每個星期或幾個月增加新功能。
Android自己的核心的效能受到顯著影響,並且顯著的例子被壓縮RAM和64位支援。它將核心版本3.10作為Lollipop的最低版本:核心從3.7開始正式支援ARM64(AArch64)。
Android核心的編譯方式與Linux的設定檔略有不同通過合并Android的基礎和推薦的配置模板來產生那些預設的核心分發版本(如source.android.com網站核心所示)部)
Android將自己的特質或Androidisms引入到核心。這些核心中的一些核心由#ifdef語句為條件守護編譯,其餘的在drivers / staging / android目錄下。

 

匿名共用記憶體,binder,Logger,IO記憶體 Clerk,低記憶體清除,
 

RAM控制台(核心panic就找他,存放著dmsg的log),驅動同步,定時輸出,睡眠鎖(電源管理)

 

 





 

Android Internals.A第一章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.