RK3568 安卓11 集成开源库的动态库到super
RK3568 安卓11 集成开源库的动态库到super.img
一、在hardware/rockchip/
1.创建编译
d3@d3-X99:~/rk3568_android_11_sdk$ ls hardware/rockchip/i2ctools2/
Android.bp.bak Android.mk.bak COPYING eeprog include Makefile README tools
Android.mk CHANGES COPYING.LGPL eeprom lib py-smbus stub version.h
2.Android.mk
LOCAL_PATH := $(call my-dir)
i2c_includes := $(LOCAL_PATH) $(LOCAL_PATH)/include
#libi2c-tools.so
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
LOCAL_SRC_FILES := tools/i2cbusses.c tools/util.c
LOCAL_MODULE := libi2ctools2
LOCAL_PRELINK_MODULE := false
LOCAL_PROPRIETARY_MODULE := true
# LOCAL_MODULE_RELATIVE_PATH :=
include $(BUILD_SHARED_LIBRARY)
3..修改device/rockchip/common/device.mk
d3@d3-X99:~/rk3568_android_11_sdk/device/rockchip/common$ git diff
diff --git a/device.mk b/device.mk
index 138363e..5f89117 100644
--- a/device.mk
+++ b/device.mk
@@ -607,6 +607,9 @@ else
BUILD_IEP := false
endif
+PRODUCT_PACKAGES += \
+ libi2ctools2
+
# charge
PRODUCT_PACKAGES += \
charger \
d3@d3-X99:~/rk3568_android_11_sdk/device/rockchip/common$
device/rockchip/common/sepolicy/vendor/file_contexts 可以不用修改
d3@d3-X99:~/rk3568_android_11_sdk$
d3@d3-X99:~/rk3568_android_11_sdk$ grep -nr i2ctools device/
device/rockchip/common/device.mk:611: libi2ctools2
device/rockchip/common/sepolicy/vendor/file_contexts:160:#/vendor/lib(64)?/libi2ctools2.so u:object_r:same_process_hal_file:s0
d3@d3-X99:~/rk3568_android_11_sdk$
4.编译super.img
make -j72
5.确认结果
d3@d3-X99:~/rk3568_android_11_sdk$ find -name libi2ctools2.so
./out/target/product/rk3568_r/vendor/lib64/libi2ctools2.so
./out/target/product/rk3568_r/vendor/lib/libi2ctools2.so
./out/target/product/rk3568_r/obj/SHARED_LIBRARIES/libi2ctools2_intermediates/libi2ctools2.so
./out/target/product/rk3568_r/obj/SHARED_LIBRARIES/libi2ctools2_intermediates/LINKED/libi2ctools2.so
./out/target/product/rk3568_r/obj_arm/SHARED_LIBRARIES/libi2ctools2_intermediates/libi2ctools2.so
./out/target/product/rk3568_r/obj_arm/SHARED_LIBRARIES/libi2ctools2_intermediates/LINKED/libi2ctools2.so
./out/target/product/rk3568_r/symbols/vendor/lib64/libi2ctools2.so
./out/target/product/rk3568_r/symbols/vendor/lib/libi2ctools2.so
d3@d3-X99:~/rk3568_android_11_sdk$
库的文件夹名可以与库名不同,但是device/rockchip/common/device.mk与Android.mk里面的库名一定要相同才能编译出动态库。
device/rockchip/common/device.mk:611: libi2ctools2
与
LOCAL_MODULE := libi2ctools2
一定要匹配。
二.在external/
d3@d3-X99:~/rk3568_android_11_sdk$ ls external/libmyyi2ctools
Android.bp.bak Android.mk.bak COPYING eeprog include Makefile README tools
Android.mk CHANGES COPYING.LGPL eeprom lib py-smbus stub version.h
d3@d3-X99:~/rk3568_android_11_sdk$
2.Android.mk
LOCAL_PATH := $(call my-dir)
i2c_includes := $(LOCAL_PATH) $(LOCAL_PATH)/include
# Base modules and settings for the system partition.
# 在build/make/target/product/base_system.mk
#PRODUCT_PACKAGES += libmyi2ctools
#libi2c-tools.so
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
LOCAL_SRC_FILES := tools/i2cbusses.c tools/util.c
LOCAL_MODULE := libmyi2c-tools
LOCAL_PRELINK_MODULE := false
#安装在默认路径:/system/lib64/
#./out/target/product/rk3568_r/system/lib64/libmyi2c-tools.so
#./out/target/product/rk3568_r/system/lib/libmyi2c-tools.so
#/vendor/lib64/
#./out/target/product/rk3568_r/vendor/lib64/libmyi2c-tools.so
#./out/target/product/rk3568_r/vendor/lib/libmyi2c-tools.so
LOCAL_PROPRIETARY_MODULE := true
#指定相对路径安装
# LOCAL_MODULE_RELATIVE_PATH :=
include $(BUILD_SHARED_LIBRARY)
3.修改build/make/target/product/base_system.mk
d3@d3-X99:~/rk3568_android_11_sdk/build/make/target/product$ git diff
diff --git a/target/product/base_system.mk b/target/product/base_system.mk
index 4569bce..6f70dbb 100644
--- a/target/product/base_system.mk
+++ b/target/product/base_system.mk
@@ -201,6 +201,7 @@ PRODUCT_PACKAGES += \
lpdump \
lshal \
mdnsd \
+ libmyi2c-tools\
mediacodec.policy \
mediaextractor \
mediametrics \
d3@d3-X99:~/rk3568_android_11_sdk/build/make/target/product$
4.编译super.img
make -j72
5.确认结果
d3@d3-X99:~/rk3568_android_11_sdk$ find -name libmyi2c-tools.so
./out/target/product/rk3568_r/vendor/lib64/libmyi2c-tools.so
./out/target/product/rk3568_r/vendor/lib/libmyi2c-tools.so
./out/target/product/rk3568_r/obj/SHARED_LIBRARIES/libmyi2c-tools_intermediates/libmyi2c-tools.so
./out/target/product/rk3568_r/obj/SHARED_LIBRARIES/libmyi2c-tools_intermediates/LINKED/libmyi2c-tools.so
./out/target/product/rk3568_r/obj_arm/SHARED_LIBRARIES/libmyi2c-tools_intermediates/libmyi2c-tools.so
./out/target/product/rk3568_r/obj_arm/SHARED_LIBRARIES/libmyi2c-tools_intermediates/LINKED/libmyi2c-tools.so
./out/target/product/rk3568_r/symbols/vendor/lib64/libmyi2c-tools.so
./out/target/product/rk3568_r/symbols/vendor/lib/libmyi2c-tools.so
d3@d3-X99:~/rk3568_android_11_sdk$
同理:build/make/target/product/base_system.mk的库名和Android.mk的库名要相同,才能编译出动态库。
build/make/target/product/base_system.mk:205: libmyi2c-tools\
与
LOCAL_MODULE := libmyi2c-tools
参考学习:
Android.bp - 码农教程 - http://www.manongjc.com/detail/42-jbdshchstzkkeis.html
Android.bp学习笔记 - Hello-World3 - 博客园 - https://www.cnblogs.com/hellokitty2/p/10595618.html
Android.bp解析与使用看这篇就够了 - 知乎 - https://zhuanlan.zhihu.com/p/680171333
【Android】Automotive开发之BP文件_platform_apis-CSDN博客 - https://blog.csdn.net/qq_23825391/article/details/125143390
Android 编译的配置文件:android.mk 和android.bp_android系统定制之android.mk和android.bp语法详解(精通版)-CSDN博客 - https://blog.csdn.net/z755924843/article/details/134551207
Android Build 系统-CSDN博客 - https://blog.csdn.net/weixin_44826221/article/details/109801253
END!
浙公网安备 33010602011771号