【Arch】Android 7 Nougat原始碼目錄結構分析
阿新 • • 發佈:2019-01-01
|- art // Android Runtime,一種App執行模式,區別於傳統的Dalvik虛擬機器,旨在提高Android系統的流暢性,包括以下幾個目錄。 |- benchmark // 程式測試基準。 |- build // 編譯檔案。 |- cmdline // 命令列工具的初始化與解析。 |- compiler // 編譯套件。 |- dalvikvm // Dalvik虛擬機器啟動程式。 |- dex2oat // 檔案dex格式轉換為oat格式的轉換程式。 |- dexdump // 檔案dex格式的內容獲取程式。 |- dexlayout // 檔案dex格式的佈局。 |- dexlist // 檔案dex格式的函式獲取程式。 |- disassembler // 幾種反彙編實現,包括arm64、arm、mips和x86。 |- imgdiag // image診斷程式。 |- libart_fake // 一個虛假的art庫,用於那些企圖連結ark庫的作弊程式。 |- oatdump // 檔案oat格式的內容獲取程式。 |- patchoat // 檔案oat格式的補丁管理程式。 |- profman // 程式效能分析助手。 |- runtime // art庫實現,主要為C++和彙編檔案。 |- sigchainlib // 訊號處理庫。 |- test // 測試程式。 |- tools // 一些工具,包括python和shell指令碼。 |- bionic // Android改造的C/C++庫,包括以下幾個目錄。 |- benchmarks // 程式測試基準。 |- build // 編譯檔案。 |- libc // libc |- libdl // libdl |- libm // libm |- libstdc++ // libstdc++ |- linker // 程式連結器。 |- tests // 測試程式。 |- tools // 一些工具,包括python和shell指令碼。 |- bootable // Android程式啟動導引,包括一個recovery目錄。 |- recovery // 系統還原。 |- build // Android編譯系統,包括原有的GNU make/mk和新加入的go/bp,包括以下幾個目錄。 |- blueprint // 編譯系統元件,由go實現,用於讀取類json格式的bp檔案,轉換成Ninja格式。 |- kati // 編譯系統元件,用於相容原有的GNU make/mk,對mk檔案進行格式轉換。 |- make // 原有的編譯系統實現,包括makefile、python、shell等。 |- soong // 編譯系統元件,同樣是輔助生成Ninja格式的檔案。 |- compatibility // Android軟、硬體的相容性規則,包括一個cdd目錄。 |- cdd // Compatibility Defination Document,為markdown語法,包括以下13項內容。 |- 1_introduction |- 2_device-types |- 3_software |- 4_application-packaging |- 5_multimedia |- 6_dev-tools-and-options |- 7_hardware-compatibility |- 8_performance-and-power |- 9_security-model |- 10_software-compatibility-testing |- 11_updatable-software |- 12_document-changelog |- 13_contact-us |- cts // Android Compatibility Test Suite,需符合cdd的要求,包括以下幾個目錄。 |- apps |- build |- common |- development |- hostsidetests |- libs |- suite |- tests |- tools |- dalvik // Android Dalvik虛擬機器相關內容,包括以下幾個目錄。 |- dexdump |- dexgen |- docs |- dx |- libdex |- opcode-gen |- tools |- developers // Android開發者參考文件,包括以下幾個目錄。 |- build // gradle編譯系統。 |- demos // 使用了gradle的例子。 |- samples // Android SDK中的例子。 |- development // Android開發基礎設施,包括以下幾個目錄。 |- apps // 若干app。 |- build // 編譯檔案,包括打包用的atree檔案。 |- cmds // 工具monkey。 |- docs // 說明文件。 |- host // host |- ide // ide,包括eclipse、emacs和intellij。 |- libraries // lib庫。 |- ndk // ndk |- python-packages // python工具包,包括adb、fastboot和gdbrunner。 |- samples // 示例程式碼。 |- scripts // python、shell指令碼。 |- sdk // sdk |- sdk_overlay // sdk overlay |- sys-img // 系統映象資訊。 |- testrunner // 測試程式啟動指令碼。 |- tools // 一些常用的工具,如make_key等 。 |- tutorials // 教程。 |- device // Android支援的各種裝置及相關配置,結構相似,包括以下幾個目錄。 |- asus // 華碩 |- common // 裝置間共有的配置。 |- generic // 不同的CPU架構,包括arm、goldfish、emulator、mips、x86等。 |- google // 谷歌 |- htc // htc |- huawei // 華為 |- lge // LG |- linaro // Linario |- moto // 摩托羅拉 |- sample // 例子 |- docs // Android系統介紹,包括一個source.android.com目錄。 |- source.android.com // AOSP,Android Open Source Project。 |- external // Android中使用的外部開源庫,包括以下幾個目錄。 |- aac // Advanced Audio Coding,高階音訊編碼。 |- abi-compliance-checker // ABI相容性分析工具。 |- abi-dumper // ABI資料解析工具。 |- android-clat // Android中用NAT64/DNS64支援IPv4的程式運行於IPv6的網路。 |- androidplot // Android中用以建立動態的或靜態的圖表。 |- ant-glob // ANT模式匹配工具。 |- antlr // Language Recognition,一款語法分析器,可根據輸入自動生成語法樹並顯示出來。 |- apache-commons-math // Apache數學庫。 |- apache-harmony // Apache Java SE執行時類庫及一些工具。 |- apache-http // Apache HTTP服務。 |- apache-xml // Apache XML解決方案。 |- archive-patcher // 補丁管理庫。 |- autotest // 自動測試框架,Python實現,起初用於Linux Kernel,後擴充套件到Chrome OS和Android。 |- avahi // Zeroconf規範的一種實現,可以在本地網路中釋出和獲知各種服務和主機。 |- avb // Ethernet Audio/Video Bridging,乙太網音視訊橋接技術。 |- bison // 語法分析器生成器。 |- blktrace // 收集磁碟IO資訊中當IO進行到塊裝置層即block裝置時的詳細資訊。 |- boringssl // BoringSSL為OpenSSL的一個分支,優化了一些加密演算法。 |- bouncycastle // 加解密包。 |- bsdiff // 二進位制增量分析工具,生成新、舊版本的一個patch,用以舊版本增量升級到新版本。 |- bzip2 // 基於Burrows-Wheeler演算法的無失真壓縮技術。 |- caliper // 基準測量工具。 |- c-ares // DNS請求非同步處理庫。 |- cblas // C interface to Legacy BLAS。 |- ceres-solver // c++庫,用於建模、解決複雜的非線性最小二乘問題,如3D模型、計算機視覺等。 |- chromium-libpac // 基於proxy_resolver_v8。 |- chromium-trace // 以HTML的形式顯示資料使用情況。 |- chromium-webview // Webview。 |- clang // 編譯器。 |- cmockery // 用於C程式的單元測試。 |- compiler-rt // Compiler Routine。 |- conscrypt // A Java Security Provider。 |- crcalc // Constructive Real Calculator。 |- cros // 一些常量和定義,只有一些標頭檔案和proto檔案。 |- curl // 檔案傳輸。 |- dagger2 // A fast dependency injector for Android and Java。 |- dbus // dbus。 |- dbus-binding-generator // dbus bind。 |- deqp // GPU測試框架。 |- dexmaker // dex maker。 |- dhcpcd-6.8.2 // DHCP client daemon。 |- dlmalloc // malloc/free routines implemented by Doug Lea。 |- dng_sdk // DNG檔案讀寫庫。 |- dnsmasq // 配置DNS和DHCP的工具。 |- doclava // Javadoc工具。 |- donuts // donut。 |- drm_gralloc // gralloc for drm,Direct Rendering Manager。 |- drm_hwcomposer // hwcompositor for drm。 |- droiddriver // Android UI testing library。 |- dtc // Device Tree Compiler。 |- e2fsprogs // 檔案系統工具集。 |- easymock // 單元測試模擬框架。 |- eclipse-basebuilder // eclipe外掛編譯相關。 |- eclipse-windowbuilder // eclipse編譯相關。 |- eigen // 用於線性代數的C++模板庫。 |- elfutils // ELF |- emma // 單元測試覆蓋率統計。 |- esd // 音訊相關。 |- expat // XML解析。 |- eyes-free // 語音互動。 |- f2fs-tools // Flash Friendly File System。 |- fdlibm // Freely Distributed LIBM,數學庫。 |- fec // Forward error correction。 |- fio / io測試工具。 |- flac // Free Lossless Audio Codec。 |- fmtlib // format。 |- fonttools // 字型處理工具。 |- freetype // 字型引擎。 |- fsck_msdos // 檔案系統檢查工具。 |- gemmlowp // low-precision for general matrix multiplication。 |- giflib // gif圖片庫。 |- glide // media管理框架。 |- google-benchmark // 支援benchmark的庫,類似於單元測試。 |- google-breakpad // crash報告系統,包括client、server。 |- google-fonts // 字型。 |- googletest // C++ test framework。 |- google-tv-pairing-protocol // tv配對協議。 |- gptfdisk // 文字模式的磁碟分割槽工具。 |- guava // Google Core Libraries for Java。 |- guice // 依賴注入框架。 |- hamcrest // 用於測試的可以合成各種表示式的匹配器類庫。 |- harfbuzz_ng // 字型排版引擎。 |- hyphenation-patterns // 各種語言的字型連線模式。 |- icu // Unicode元件。 |- ImageMagick // bitmap圖片管理,支援多種格式。 |- ims // IP Multi-media System,包括rcs融合通訊。 |- iproute2 // 網路配置工具包。 |- ipsec-tools // 加密的ip協議工具包。 |- iptables // IP資訊包過濾系統。 |- iputils // 網路工具包。 |- iw // Netlink 802.11。 |- jacoco // 測試覆蓋率工具。 |- jarjar // Java包管理工具。 |- javasqlite // sqlite |- javassist // Java位元組碼編輯。 |- jcommander // 引數解析。 |- jdiff // Java程式碼比較工具。 |- jemalloc // 更好的記憶體管理工具,解決記憶體碎片問題。 |- jetty // servlet容器。 |- jline // 處理控制檯輸入。 |- jmdns // 多播DNS實現,可在本地區域網中發現和註冊服務。 |- jsilver // HTML模板系統。 |- jsmn // JSON解析。 |- jsoncpp // C++處理JSON,序列化和反序列化。 |- jsr305 // Java Specification Request。 |- jsr330 // Java Specification Request。 |- junit // Java單元測試框架。 |- junit-params // jnit升級版,添加了更好用的引數化測試。 |- kernel-headers // Kernel級別標頭檔案。 |- ksoap2 // 訪問Web Service。 |- libavc |- libbrillo |- libcap |- libcap-ng |- libchrome |- libconstrainedcrypto |- libcups |- libcxx |- libcxxabi |- libdaemon |- libdivsufsort |- libdrm |- libedit |- libevent |- libexif |- libgdx |- libgsm |- libhevc |- libjpeg-turbo |- libldac |- liblzf |- libmicrohttpd |- libmojo |- libmpeg2 |- libmtp |- libnl |- libogg |- libopus |- libpcap |- libphonenumber |- libpng |- libunwind |- libunwind_llvm |- libusb |- libusb-compat |- libutf |- libvncserver |- libvorbis |- libvpx |- libvterm |- libweave |- libxml2 |- libyuv |- linux-kselftest // linux test。 |- littlemock // mock框架。 |- lld // LLVM linker。 |- llvm // Low Level Virtual Machine。 |- ltp // Linux Test Project。 |- lz4 // 快速的無失真壓縮演算法。 |- lzma // 壓縮。 |- markdown // Markdown,一種標記語言。 |- mdnsresponder // Appple Bonjour元件,方便IP網路配置。 |- mesa3d // 三維計算機圖形庫。 |- messageformat // International Components for Unicode for Java。 |- Microsoft-GSL // Guideline Support Library。 |- minijail // 沙盒,執行不信任的程式。 |- mksh // MirBSD Korn Shell。 |- mmc-utils // mmc卡管理。 |- mockftpserver // 模擬FTP服務以進行FTP客戶端測試。 |- mockito // 測試框架。 |- mockwebserver // 測試框架。 |- modp_b64 // base64編碼、解碼。 |- mp4parser // mp4解析。 |- mtpd // Media Transfer Protocol。 |- nanohttpd // HTTP Server,用於嵌入其它的程式。 |- nanopb-c // ANSI-C實現的Protocol Buffer。 |- naver-fonts // 字型。 |- netcat // 網路使用檢視工具。 |- netperf // 網路效能測試。 |- neven // 人臉識別演算法。 |- nfacct // 流量統計。 |- nist-pkits // NIST PKI Test Suite。 |- nist-sip // nist實現的sip協議,ip電話。 |- noto-fonts // 漢語、日語、韓語字型。 |- oauth // 關於授權的開放網路標準。 |- objenesis // Java物件例項化庫。 |- okhttp // HTTP&SPDY Client。 |- opencv // 計算機視覺庫。 |- opencv3 // 計算機視覺庫。 |- owasp // Web Application。 |- parameter-framework // system-wide parameter management。 |- pcre // Perl相容的正則表示式庫。 |- pdfium // PDF渲染引擎。 |- piex // Preview Image Extractor。 |- ppp // Point to Point Protocol,鏈路層協議。 |- proguard // Java class file shrinker, optimizer, obfuscator and preverifier. |- protobuf // 資料互動格式。 |- regex-re2 // 正則表示式庫。 |- replicaisland // A side scrolling video game for Android。 |- rmi4utils // Remote Method Invoke。 |- robolectric // 黑盒測試。 |- roboto-fonts // roboto font。 |- rootdev // Chromium OS version of rootdev。 |- safe-iop // safe integer operation。 |- scrypt // 加密相關。 |- seccomp-tests // Seccomp-BPF Kernel Self-Test Suite。 |- selinux // Secure Linux。 |- sfntly // 字型庫。 |- shflags // shell script。 |- skia // 2D圖形庫。 |- sl4a // Scripting Layer for Android。 |- slf4j // Simple Logging Facade for Java。 |- smali // Dalvik虛擬機器的dex格式的彙編與反彙編。 |- snakeyaml // 用於Java虛擬機器的YAML檔案解析器。 |- sonic // 語音開發庫。 |- sonivox // 語音開發庫。 |- speex // 語音開發庫。 |- spirv-llvm // Khronos LLVM-SPIRV圖形渲染語言格式轉換。 |- sqlite // sqlite。 |- squashfs-tools // 只讀的高壓縮的檔案系統。 |- srtp // Secure Real-time Transport Protocol。 |- strace // system call tracer。 |- svox // 語音庫。 |- tagsoup // SAX解析。 |- tcpdump // 網路監聽。 |- testng // 實機測試及資料收集。 |- timezonepicker-support // Time Zone。 |- tinyalsa // ALSA處理。 |- tinycompress // 用於ALSA格式的讀取,如mp3。 |- tinyxml // XML解析工具,C++實現。 |- tinyxml2 // XML解析。 |- tlsdate // 時間更新服務,TCP實現。 |- toybox // 命令列工具包。 |- tpm2 // Trusted Platform Module。 |- tremolo // ogg音訊解壓。 |- unicode // Unicode。 |- universal-tween-engine // Java物件插值。 |- v8 // JavaScript引擎,C++實現。 |- valgrind // 記憶體、效能分析工具。 |- vboot_reference // Chrome OS verified boot in firmware。 |- vixl // ARMv8 Runtime Code Generation Library。 |- vogar // vogar. |- vulkan-validation-layers // Vulkan元件,包括ICD Loader和Validation Layer。 |- webp // 處理WebP格式的圖片。 |- webrtc // 支援瀏覽器、移動App的Real-time Communication。 |- wpa_supplicant_8 // WIFI Protected Access。 |- xmlrpcpp // XmlRpc協議的C++實現。 |- xmlwriter // xml |- xmp_toolkit // xmp |- zlib // 使用了DEFLATE演算法的資料壓縮庫。 |- zopfli // C庫,一種壓縮演算法。 |- zxing // Java庫,用於識別1D/2D條形碼。 |- frameworks // Android基礎框架。 |- av // av,包括以下幾個目錄。 |- camera |- cmds |- drm |- media |- radio |- services |- soundtrigger |- tools |- base // base,包括以下幾個目錄。 |- api |- cmds |- core |- java |- jni |- res |- tests |- data |- docs |- drm |- graphics |- keystore |- legacy-test |- libs |- androidfw |- common_time |- hwui |- input |- storage |- usb |- location |- media |- native |- nfc-extras |- obex |- opengl |- packages |- proto |- rs |- samples |- sax |- services |- telecomm |- telephony |- test-runner |- tests |- tools |- wifi |- compile // 編譯相關。 |- data-binding // 資料繫結。 |- ex // ex。 |- minikin // Text Layout。 |- ml // Machine Learning。 |- multidex // Multi-dex Loader。 |- native // native實現,包括以下幾個目錄。 |- aidl |- build |- cmds |- data |- docs |- libs |- binder |- diskusage |- gui |- input |- ui |- opengl |- services |- batteryservice inputflinger nativeperms powermanager sensorservice surfaceflinger |- vulcan |- opt // 一些軟體。 |- rs // Render Script,可建立3D介面。 |- support // support |- volley // volley |- webview // webview |- wilhelm // Wilhelm,基於Khronos的OpenSL ES/OpenMAX AL的audio/multimedia實現。 |- hardware // HAL層,包括以下幾個目錄。 |- akm // AK8975感測器,包括SensorControl和HAL層的libsensors。 |- broadcom // Boradcom,包括libbt和wlan。 |- google // Google,包括Android Packet Filter。 |- intel // Intel,包括audio、media、bootstub、img、sensor等。 |- interfaces // HAL介面,包括以下幾個目錄。 |- audio |- benchmarks |- bluetooth |- boot |- health |- ir |- light |- memtrack |- nfc |- power |- radio |- sensors |- tests |- thermal |- tv |- vehicle |- vibrator |- wifi |- invensense // InvenSense感測。 |- libhardware // libhardware,包括以下幾個模組。 |- modules |- audio |- audio_remote_submix |- camera |- consumerir |- fingerprint |- gralloc |- hwcomposer |- input |- local_time |- nfc |- nfc-nci |- power |- radio |- sensors |- soundtrigger |- thermal |- tv_input |- usbaudio |- usbcamera |- vehicle |- vibrator |- vr |- libhardware_legacy // hardware legacy,包括以下幾個模組。 |- audio |- power |- uevent |- marvell // Marvell,包括bt。 |- qcom // Qualcomm,包括audio、wlan等。 |- ril // Radio Interface Layer。 |- kernel // Linux Kernel,不過Android預設不提供,需要單獨下載,只有一個tests目錄。 |- tests // net測試。 |- libcore // Android Java核心類庫,包括以下幾個目錄。 |- benchmarks |- dalvik |- dex |- dom |- expectations |- harmony-tests |- json |- jsr166-tests |- libart |- luni |- ojluni |- support |- test-rules |- tzdata |- xml |- libnativehelper // Android Java類庫的native實現助手,包括一個tests目錄。 |- tests // 測試程式。 |- packages // Android Package,包括以下幾個目錄。 |- apps // 各種app。 |- experiment // 非release/public的測試程式。 |- inputmethods // 輸入法,包括LatinIME和OpenWnn。 |- providers // 各種provider。 |- screensavers // 屏保。 |- services // 各種service。 |- wallpapers // 桌布。 |- pdk // Android Platform Development Kit,包括以下幾個目錄。 |- apps |- build |- util |- platform_testing // Android平臺測試程式,包括以下幾個目錄。 |- build |- libraries |- scripts |- tests |- utils |- prebuilts // Android預編譯目錄,包括以下幾個目錄。 |- android-emulator // Android模擬器,由external/qemu/android/scripts/package-release.sh生成。 |- build-tools // Ninja編譯系統的輔助工具。 |- checkstyle // Java編碼規範檢查。 |- clang // c/c++/object-c程式碼編譯器。 |- deqp // Draw Elements Quality Program,適用於OpenGL ES/OpenCL的GPU應用分析。 |- devtools // 開發工具,如常見的adt、android、ddms、lint等。 |- eclipse // eclipse。 |- gcc // gcc。 |- gdb // gdb。 |- go // go。 |- gradle-plugin // gradle外掛。 |- libs // libedit。 |- maven_repo // maven。 |- misc // misc。 |- ndk // ndk。 |- python // python。 |- qemu-kernel // qemu kernel。 |- sdk // sdk。 |- tools // tool。 |- sdk // Android的Java層SDK,包括以下幾個目錄。 |- annotations |- apkbuilder |- apps |- attribute_stats |- avdlauncher |- bash_completion |- build |- docs |- dumpeventlog |- eclipse |- emulator |- eventanalyzer |- files |- find_java |- find_java2 |- find_lock |- hierarchyviewer |- icons |- sdklauncher |- settings |- templates |- testapps |- system // Android系統設施,包括以下幾個目錄。 |- bt // 藍芽 |- ca-certificates // Certificate Authority。 |- connectivity // WIFI,包括wificond和wifilogd兩個daemon。 |- wificond |- wifilogd |- core // 核心庫,包括以下幾個目錄。 |- adb |- adf |- base |- bootstat |- cpio |- debuggerd |- fastboot |- fingerprintd |- fs_mgr |- gatekeeperd |- healthd |- init |- libappfuse |- libbacktrace |- libbinderwrapper |- libcrypto_utils |- libcutils |- libdiskconfig |- libion |- liblog |- libmemtrack |- libmemunreachable |- libnativebridge |- libnativeloader |- libnetutils |- libpackagelistparser |- libpixelflinger |- libprocessgroup |- libprocinfo |- libsparse |- libsuspend |- libsync |- libsysutils |- libusbhost |- libutils |- libziparchive |- lmkd |- logcat |- logd |- logwrapper |- mkbootimg |- reboot |- rootdir |- run-as |- sdcard |- toolbox |- trusty |- tzdatacheck |- extras // 核心庫之外的程式,包括以下幾個目錄。 |- alloc-stress |- ANRdaemon |- boot_control_copy |- bootctl |- brillo_config |- cppreopts |- cpustats |- crypto-perf |- ext4_utils |- f2fs_utils |- iotop |- kexec_tools |- ksmutils |- latencytop |- libfec |- libpagemap |- librank |- memcpy-perf |- memory_replay |- memtrack |- micro_bench |- mmap-perf |- multinetwork |- pagecache |- perfprofd |- postinst |- preopt2cachename |- procmem |- procrank |- puncture_fs |- runconuid |- sane_schedstat |- showmap |- showslab |- simpleperf |- slideshow |- sound |- squashfs_utils |- su |- systrace_analysis |- taskstats |- tests |- tools |- verity |- zram-perf |- gatekeeper // 防護程式,如鎖屏密碼等。 |- hwservicemanager // Hardware Service Manager。 |- keymaster // HAL金鑰管理。 |- libfmq // Message Queue。 |- libhidl // Hardware Interface Description Language。 |- libhwbinder // Hardware Binder。 |- libufdt // Unflattened Device Tree。 |- libvintf // Vendor Interface。 |- media // 包括alsa、audio、brillo、camera和radio。 |- nativepower // 用於Brillo的電源管理模組,包括客戶端的libnativepower和服務端的nativepowerman以及示例程式碼。 |- netd // 網路模組,包括client和server。 |- nfc // Near Field Communication。 |- nvram // NVRAM訪問控制。 |- security // 安全模組,包括keystore和軟體模擬的softkeymaster。 |- sepolicy // Android SELinux policy configuration。 |- tools // 包括aidi和hidl。 |- tpm // Trusted Platform Module,一種安全防禦工具。 |- update_engine // 系統升級。 |- vold // Volume服務,如sdk卡、usb等。 |- test // Android Vendor測試框架,包括以下幾個目錄。 |- vts // Vendor Test Suite。 |- vts-testcase // VTS測試用例,包括fuzz、kernel、performance和security。 |- toolchain // Android工具鏈,包括一個binutils目錄。 |- binutils // bin utilities。 |- tools // Android工具集,包括以下幾個目錄。 |- apksig // APK簽名,包括一個Java庫和一個Java命令列工具。 |- external // 外部工具,包括以下幾個目錄。 |- fat32lib // 用於FAT檔案系統。 |- gradle // Gradle各種版本的原始碼壓縮包。 |- loganalysis // log分析的Java類庫。 |- repohooks // 用於repo upload,報告各倉庫的修改情況。 |- test // 測試框架,Python實現。 |- tradefederation // 服務於測試。