編輯:關於Android編程
Android 源碼根文件夾結構:
以下內容遵循這個命名: 文件夾名稱:釋意
bionic:android 中所使用的是標准C庫源文件,該項目將被編譯成靜態庫文件,這些庫文件僅在編譯其他C程序時使用,不會被輸出到最終設備中
bootable:二次引導程序源碼,對應NAND Flash的二次引導分區中的內容,這部分代碼不會被包含在最終的system.img或boot.img 文件中
build:編譯系統中樞,該目錄下的各種make腳本和shell腳本共同組成了android的編譯環境
cts:兼容測試代碼,基於android系統的手機如果需要google的認證,則必須經過google的兼容性測試,兼容性測試的目的是為了保證該設備具有標准的 SDK API接口
dalvik:android中的java虛擬機相關的源碼,虛擬機內部設計相關的文檔可以參考dalvik/docs目錄下的說明文檔
development:一些開發android工程所使用的相關配置或文件,如:一些.classpath文件
device:不同設備相關的編譯腳本文件,一個設備一般就是指一種型號的手機,如: Htc magic、Nexus One、Nexus S 等等
external:android系統所依賴的一些外部庫文件,如:sqlite、opencore等,這些文件大部分都是c/c++代碼,也有少量的java庫
frameworks:Framework的內核源碼,主要由java文件組成
hardware:Android定義的硬件抽象層(HAL) 相關的文件
libcore:Dalvik虛擬機所依賴的java庫,如HashMap、ArrayList等,這些庫和Dailvik共同組成dailvik的java運行環境
ndk:Native Development Kit ,即編譯NDK所需的相關文件
packages:Android中的一些系統應用程序,比如Contacts、Phone等
prebuilt:編譯所需的程序文件,主要包含不同平台的ARM編譯器
sdk:編譯SDK所需的相關文件
system:Android底層的Linux所需的一些系統工具程序,這些程序主要運行於adb 、logcat等
tools:一些其他輔助工具,目前只有一個名稱為tradefederation的java項目
vendor:和device目錄中的程序共同定義一個設備所包含的私有文件,它與device目錄的區別在於,device主要定義了不同設備所需的特有文件,但卻是開源的,而vendor中包含的文件一般都是目標文件,卻不是開源的。
Android 源碼\out目錄結構:
out\target\product\generic\下有個system目錄(如果沒有generic這個目錄則是在項目名目錄下,如mtk的wtxxxxx),其包含內容簡介如下:
\system\app
這個裡面主要存放的是常規下載的應用程序,可以看到都是以APK格式結尾的文件,在這個文件夾下的程序為系統默認的組件,自己安裝的軟件將不會出現在這裡,而是\data\文件夾中。
\system\app\AlarmClock.apk 鬧鐘
\system\app\Browser.apk 浏覽器
\system\app\Bugreport.apk Bug報告
\system\app\Calculator.apk 計算器
\system\bin
這個目錄下的文件都是系統的本地程序,從bin文件夾名稱可以看出是binary二進制的程序,裡面主要是Linux系統自帶的組件:
\system\bin\am
\system\bin\app_process 系統進程
\system\bin\dalvikvm Dalvik虛擬機宿主
\system\bin\dbus-daemon 系統BUS總線監控
\system\bin\debuggerd 調試器
\system\bin\debug_tool 調試工具
\system\bin\dexopt DEX選項
\system\bin\dhcpcd DHCP服務器
\system\etc
從文件夾名稱來看保存的都是系統的配置文件,比如APN接入點設置等核心配置。
\system\etc\apns-conf.xml APN接入點配置文件
\system\etc\AudioFilter.csv 音頻過濾器配置文件
\system\etc\AudioPara4.csv
\system\etc\bookmarks.xml 書簽數據庫
\system\etc\dbus.conf 總線監視配置文件
\system\fonts
字體文件夾,除了標准字體和粗體、斜體外可以看到文件體積最大的可能是中文字庫,或一些unicode字庫,從T-Mobile G1上可以清楚的看到顯示簡體中文正常,其中DroidSansFallback.ttf文件大小
\system\fonts\DroidSans-Bold.ttf
\system\fonts\DroidSans.ttf
\system\fonts\DroidSansFallback.ttf
\system\fonts\DroidSansMono.ttf
\system\framework
framework主要是一些核心的文件,從後綴名為jar可以看出是是系統平台框架。
\system\framework\am.jar
\system\framework\am.odex
\system\framework\android.awt.jar AWT庫
\system\framework\android.awt.odex
\system\lib
lib目錄中存放的主要是系統底層庫,如平台運行時庫。
\system\lib\libaes.so
\system\lib\libagl.so
\system\lib\libandroid_runtime.so Android運行時庫
\system\lib\libandroid_servers.so 系統服務組件
\system\lib\libaudio.so 音頻處理
\system\lib\libaudioeq.so EQ均衡器
\system\lib\libaudioflinger.so 音頻過濾器
\system\lib\libbluetooth.so 藍牙組件
\system\lib\libc.so
\system\lib\libcamera.so 超相機組件
\system\lib\libcameraservice.so
\system\lib\libcorecg.so
\system\lib\libcrypto.so 加密組件
\system\media
鈴聲音樂文件夾,除了常規的鈴聲外還有一些系統提示事件音
\system\media\audio
\system\media\audio\alarms 鬧鈴音
\system\media\audio\notifications 提示音
\system\media\audio\ringtones 鈴聲
\system\media\audio\ui 界面操作事件音
\system\sounds
默認的音樂測試文件,僅有一個test.mid文件,用於播放測試的文件。
\system\sounds\test.mid
\system\usr
用戶文件夾,包含共享、鍵盤布局、時間區域文件等。
\system\usr\keychars
\system\usr\keylayout
\system\usr\share
\system\usr\srec
一直對View的事件分發機制不太明白,在項目開發中也遇到過,在網上也找到一些解決問題方法,但是其原理並不太了解,現在辭職了有時間,今天寫寫View的事件分發,結合andr
Android提供了強大的事件處理機制,主要包括兩大類:1,基於監聽的事件處理機制:主要做法是為Android界面組件綁定特定的事件監聽器2,基於回調的事件處理機制:主要
React-Native Android 與 IOS 共用代碼React-Native 開發的App, 所有組件iOS & Android 共用, 共享一份代
前言 一個好的應用需要一個有良好的用戶體驗的登錄界面,現如今,許多應用的的登錄界面都有著用戶名,密碼一鍵刪除,用戶名,密碼