libbinder.so 路径如下:frameworks/native/libs/binder
- lib_ndk 参考路径:frameworks/native/libs/binder/ndk/Android.bp
cc_library {
name: "libbinder_ndk",
vendor_available: true,
export_include_dirs: [
"include_ndk",
"include_apex",
],
cflags: [
"-Wall",
"-Wextra",
"-Werror",
],
srcs: [
"ibinder.cpp",
"ibinder_jni.cpp",
"parcel.cpp",
"process.cpp",
"status.cpp",
"service_manager.cpp",
],
shared_libs: [
"libandroid_runtime_lazy",
"libbase",
"libbinder",
"libutils",
],
header_libs: [
"jni_headers",
],
export_header_lib_headers: [
"jni_headers",
],
version_script: "libbinder_ndk.map.txt",
stubs: {
symbol_file: "libbinder_ndk.map.txt",
versions: ["29"],
},
}
从这里可以看出libbinder_ndk.so --依赖于---> libbinder.so 。
- lib_ndk 对应的samples中的 makefile: iface.h
cc_library_static {
name: "test_libbinder_ndk_library",
defaults: ["test_libbinder_ndk_defaults"],
export_include_dirs: ["include"],
shared_libs: ["libbinder_ndk"],
export_shared_lib_headers: ["libbinder_ndk"],
srcs: ["iface.cpp"],
}
-
参考 iface.cpp
-
然后想办法传递parcel对象
1.Android Binder 底层实现原理 2.Android Developer 官网 3.HAL: 将HIDL 接口改造为Stable AIDL 4.vnd binder和binder共存问题 5.Android native进程间通信实例-binder篇 6.binder的两种C语言实现方式
- libhwbinder系统binder库 real实现
- libbinder
/frameworks/native/cmds/servicemanager/bctest.c servicemanager
../../rk3568_android12_SDK/frameworks/native/include/binder/IServiceManager.h ../../rk3568_android12_SDK/frameworks/native/libs/binder/include/binder/IServiceManager.h ../../rk3568_android12_SDK/frameworks/native/include/binder/IInterface.h ../../rk3568_android12_SDK/frameworks/native/libs/binder/include/binder/IInterface.h ../../rk3568_android12_SDK/system/core/libutils/include/utils/VectorImpl.h ../../rk3568_android12_SDK/system/logging/liblog/include/log/log_id.h ../../rk3568_android12_SDK/system/logging/liblog/include/log/log.h /system/core/libsystem/include/system/graphics.h
out/target/product/rk3568_s/system/lib/libbinder.so out/target/product/rk3568_s/system/lib/libutils.so out/target/product/rk3568_s/system/lib/libcutils.so out/target/product/rk3568_s/system/lib/liblog.so
scp beancurd@121.37.117.214:/home/beancurd/rk3568_android_sdk/rk3568_android12_SDK/out/target/product/rk3568_s/system/lib/liblog.so -P 65068 .
../../rk3568_android12_SDK/prebuilts/clang/host/linux-x86/clang-r416183b1/bin/clang++ -o vibrator_main.o -I include/ vibrator_main.cpp -std=c++17 -lc++_shared
输入结果: Sharknade Binder info: 0xb400007809678490
震动驱动对应AIDL生成目录 /out/soong/.intermediates/hardware/interfaces/vibrator/aidl/android.hardware.vibrator-V2-cpp-source/gen/include/android/hardware/vibrator/