Android中间层或底层开发中,有很多是natvie开发的,需要使用native的库。这里整理了AOSP中native库和头文件分散的几个主要位置。以供参考。
以下目录都是以aosp源码作为根目录,显示的项目路径。
1. bionic/
包括CPU平台、操作系统内核、C语言运行时支持、C标准库相关函数
android-changes-for-ndk-developers.md docs OWNERS
Android.mk libc PREUPLOAD.cfg
apex libdl README.md
benchmarks libfdtrack TEST_MAPPING
build libm tests
CleanSpec.mk libstdc++ tools
CPPLINT.cfg linker
2. hardware/
broadcom interfaces libhardware qcom
google invensense libhardware_legacy ril
3. hardware/interfaces/
这个子目录很重要,单独列出。比如automotive目录下包含车机开发中用到的can信号等硬件通信相关代码。
Android.bp fastboot PREUPLOAD.cfg
atrace gatekeeper radio
audio gnss rebootescrow
authsecret graphics renderscript
automotive health secure_element
biometrics identity sensors
bluetooth input soundtrigger
boot ir TEST_MAPPING
broadcastradio keymaster tests
camera light tetheroffload
cas media thermal
CleanSpec.mk memtrack tv
common MODULE_LICENSE_APACHE2 update-base-files.sh
compatibility_matrices neuralnetworks update-makefiles.sh
configstore nfc usb
confirmationui NOTICE vibrator
contexthub oemlock vr
current.txt OWNERS weaver
drm power wifi
dumpstate prebuilt_hashes
4. system/
系统底层运行时支持,以及相关支持库。例如hidl、hwbinder等。
apex incremental_delivery netd
bpf iorap nfc
bpfprogs keymaster nvram
bt libartpalette security
ca-certificates libfmq sepolicy
chre libhidl server_configurable_flags
connectivity libhwbinder teeui
core libsysprop testing
extras libufdt timezone
gatekeeper libvintf tools
gsid linkerconfig update_engine
hardware media vold
hwservicemanager memory
5. system/core/
这个子目录比较重要,很多获取native系统级能力的库都在这个目录下,其中也包括一些native层的进程或服务。如fastboot、logd等。
adb libcutils llkd
Android.bp libdiskconfig logcat
base libgrallocusage logd
bootstat libion logwrapper
CleanSpec.mk libkeyutils MODULE_LICENSE_APACHE2
cli-test liblog NOTICE
code_coverage libmodprobe OWNERS
cpio libnetutils PREUPLOAD.cfg
debuggerd libpackagelistparser property_service
deprecated-adf libprocessgroup qemu_pipe
diagnose_usb libprocinfo reboot
fastboot libqtaguid rootdir
fs_mgr libsparse run-as
gatekeeperd libstats sdcard
healthd libsuspend set-verity-state
include libsync shell_and_utilities
init libsystem storaged
janitors libsysutils TEST_MAPPING
libappfuse libunwindstack toolbox
libasyncio libusbhost trusty
libbacktrace libutils usbd
libbinderwrapper libvndksupport watchdogd
libcrypto_utils libziparchive
6. external/
系统中用到的第三方开源库,一共有300多个库,列举几个常见的:
curl
dagger2
googletest
google-protobuf
okhttp
libcxx
llvm
volley
valkan-headers
zxing
# 完整列表
aac conscrypt fsck_msdos jcommander libiio mockftpserver python tinyxml
adeb cpu_features fsverity-utils jdiff libjpeg-turbo mockito rappor tinyxml2
adhd cpuinfo FXdiv jemalloc libkmsxx mockwebserver Reactive-Extensions toolchain-utils
android-clat crcalc gemmlowp jemalloc_new libldac modp_b64 replicaisland toybox
androidplot cros gflags jline libmpeg2 mp4parser rmi4utils tremolo
angle crosvm giflib jsilver libnetfilter_conntrack mtpd robolectric-shadows turbine
ant-glob curl glide jsmn libnfnetlink nanohttpd roboto-fonts u-boot
antlr dagger2 golang-protobuf json-c libnl nanopb-c rootdev ukey2
ant-wireless deqp google-benchmark jsoncpp libogg naver-fonts rust unicode
apache-commons-bcel deqp-deps google-breakpad jsr305 libopus neon_2_sse scapy universal-tween-engine
apache-commons-compress desugar google-fonts jsr330 libpcap neven scrypt v4l2_codec2
apache-commons-math dexmaker google-fruit junit libphonenumber newfs_msdos scudo v8
apache-harmony dlmalloc google-styleguide junit-params libpng nfacct seccomp-tests vboot_reference
apache-http dng_sdk googletest kernel-headers libprotobuf-mutator nist-pkits selinux virglrenderer
apache-xml dnsmasq gptfdisk kmod libsrtp2 nist-sip setupcompat vixl
arm-neon-tests doclava grpc-grpc kotlinc libtextclassifier nos setupdesign vogar
arm-optimized-routines dokka grpc-grpc-java kotlinx.coroutines libunwind noto-fonts sfntly volley
arm-trusted-firmware drm_hwcomposer guava ksoap2 libunwind_llvm oauth shaderc vulkan-headers
autotest drrickorang guice libaom libusb objenesis shflags vulkan-validation-layers
avb dtc gwp_asan libavc libutf oj-libjdwp skia walt
bc dynamic_depth hamcrest libbackup libvpx okhttp skqp wayland
bcc e2fsprogs harfbuzz_ng libbrillo libvterm one-true-awk sl4a wayland-protocols
blktrace easymock honggfuzz libcap libxaac opencensus-java slf4j webp
boringssl eigen hyphenation-patterns libcap-ng libxkbcommon OpenCL-CTS smali webrtc
bouncycastle elfutils icu libchrome libxml2 OpenCSD snakeyaml wpa_supplicant_8
brotli emma igt-gpu-tools libcups libyuv openssh sonic wycheproof
bsdiff error_prone image_io libcxx linux-kselftest oss-fuzz sonivox xmp_toolkit
bzip2 ethtool ImageMagick libcxxabi llvm owasp speex XNNPACK
caliper exoplayer ims libdaemon lmfit parameter-framework sqlite xz-embedded
capstone expat iperf3 libdivsufsort ltp pcre squashfs-tools xz-java
catch2 f2fs-tools iproute2 libdrm lua pdfium strace yapf
cblas fastrpc ipsec-tools libepoxy lz4 perfetto stressapptest zlib
cbor-java fdlibm iptables libese lzma piex subsampling-scale-image-view zopfli
chromium-libpac fec iputils libevent markdown ply swiftshader zxing
chromium-trace flac iw libexif mdnsresponder ppp tagsoup
chromium-webview flatbuffers jacoco libffi mesa3d proguard tcpdump
clang fmtlib jarjar libfuse mime-support protobuf tensorflow
cldr fonttools javaparser libgav1 minigbm psimd testng
cn-cbor FP16 javapoet libgsm minijail pthreadpool tinyalsa
compiler-rt freetype javasqlite libhevc mksh puffin tinycompress