Android高通平台下编译时能生成(拷贝)预编译的so到system的lib目录
- 参考hardware\qcom\display\libcopybit
通过编译log可以知道编译到这里,生成的copybit.msm8937.so在out\target\product\msm8937_64\system\lib\hw下。libcopybit\Android.mk相关部分如下:
编译相关的log
build/core/Makefile:54: Defined in: hardware/qcom/display/libcopybit/../common.mk hardware/qcom/display/libcopybit/../common.mk
build/core/Makefile:54: Duplicate header copy:
说明build/core/Makefile能找到hardware/qcom/display/libcopybit目录
但我们增加的psam目录,在整个系统编译的时候没有看到这样的log,为什么呢
2.在hardware\qcom增加psam文件夹
目的是想在编译的时候把so拷贝到out\target\product\msm8937_64\system\lib下。用mmm单独编译可以,但是用make整个编译的时候却不会,为什么呢?
先回到前面看看我们参考的hardware\qcom\display\libcopybit下的copybit.msm8937.so怎么拷贝到system\lib\hw下。在device/qcom目录下通过grep -wrn copybit.msm8937,查找结果如下:
找到LIBCOPYBIT += copybit.msm8937,再通过LIBCOPYBIT再找到PRODUCT_PACKAGES += $(LIBCOPYBIT),android编译系统应该就是通过这里知道去编译hardware\qcom\display\libcopybit,这里需要注意copybit.msm8937是libcopybit文件夹下Android.mk中
LOCAL_MODULE :=copybit.$(TARGET_BOARD_PLATFORM)的LOCAL_MODULE的值,LOCAL_MODULE的值可以不需要和文件夹名字(libcopybit)一样,但device/qcom/common/base.mk的PRODUCT_PACKAGES += $(LIBCOPYBIT)对应的值必须是和LOCAL_MODULE的值一样。
3. 解决
根据上面的分析,在device/qcom/common/base.mk增加
#LIBPSAM
LIBPSAM := libpsam.so
PRODUCT_PACKAGES += $(LIBPSAM)
hardware\qcom\psam\Android.mk的内容如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := libpsam.soLOCAL_SRC_FILES := libpsam.so#LOCAL_MODULE_CLASS := EXECUTABLESLOCAL_MODULE_TAGS := optionalLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_MODULE_PATH := $(TARGET_OUT)/libinclude $(BUILD_PREBUILT)
确保LOCAL_MODULE := libpsam.so和LIBPSAM := libpsam.so的值一样。
更多相关文章
- Android原生(Native)C开发之六:libpng移植笔记
- Android多语言支持
- Android(安卓)混淆代码总结 和 Android(安卓)APK反编译(最新更新
- Android使用AspectJ进行AOP开发时遇到的一些问题总结
- Android(安卓)jni 开发详细流程
- valgrind for android 编译安装
- android sdk 编译--如何将源代码加入android.jar,以及make原理
- Android(安卓)NDK开发(二)——CMake脚本构建项目
- 关于xml中使用ImageView或ImageButton引起Missing contentDescri