自己添加的android模块不编译的问题

1、android 5.0

including ./hardware/invensense/Android.mk ...
TARGET_2ND_ARCH--yes
build/core/shared_library.mk:12: sensors.mt: LOCAL_MODULE_PATH for shared libraries is unsupported in multiarch builds, use LOCAL_MODULE_RELATIVE_PATH instead
build/core/base_rules.mk:550: 警告:覆盖关于目标“out/target/product//system/lib/hw/sensors.mt.so”的命令
build/core/base_rules.mk:550: 警告:忽略关于目标“out/target/product//system/lib/hw/sensors.mt.so”的旧命令
build/core/dynamic_binary.mk:84: 警告:覆盖关于目标“out/target/product//symbols/system/lib/hw/sensors.mt.so”的命令
build/core/dynamic_binary.mk:84: 警告:忽略关于目标“out/target/product//symbols/system/lib/hw/sensors.mt.so”的旧命令



2、自定义模块需要添加编译指定PRODUCT_PACKAG环境变量

我们在开发中,经常会碰到需要自己添加独立模块的时候,笔者以前也没太关心这个问题,以为写好Android.mk就可以了,其实还不是这么回事。

把自定义的模块放在android顶层目录development下面,比如模块名字是libcsiJni,模块的Android.mk如下:

[plain]  view plain copy
  1. ifeq ($(TARGET_PRODUCT),crane_EW1021H_C)  
  2.   
  3. LOCAL_PATH:= $(call my-dir)  
  4.   
  5. include $(CLEAR_VARS)  
  6. LOCAL_MODULE_TAGS := optional eng  
  7. #LOCAL_MODULE_TAGS := eng  
  8.   
  9. LOCAL_SRC_FILES := csilib.cpp           
  10.   
  11. LOCAL_C_INCLUDES:=      \  
  12.         $(TOP)/device/softwinner/common/hardware/include \  
  13.         $(TOP)/frameworks/base/include \  
  14.         device/softwinner/crane-common/hardware/libcsidecoder   
  15.                   
  16. LOCAL_SHARED_LIBRARIES:= libutils libbinder libui liblog libcutils libcsidecoder  
  17.   
  18. ifeq ($(DLOPEN_LIBSECCAMERA),1)  
  19. LOCAL_SHARED_LIBRARIES+= libdl  
  20. endif  
  21.   
  22. LOCAL_PRELINK_MODULE := false  
  23.   
  24. LOCAL_MODULE:= libcsiJni  
  25.   
  26. include $(BUILD_SHARED_LIBRARY)  
  27.   
  28. endif  

   在使用eng模式下编译,能够正常编译出来。但是在user模式下不编译,手动进入该目录,执行mm可以正常编译。Enguser版本的差异我们一般也知道,但是使用的optional,按道理说是所有模式下都可以编译的。什么原因呢?

从现象上看,应该是编译路径没有添加进去。搜索了一下资料,自定义的模块需要添加编译指定,PRODUCT_PACKAG环境变量。可以在device下面具体产品目录下的crane_productXXX.mk中或者build/target/product/core.mk中添加,示例如下

[plain]  view plain copy
  1. PRODUCT_PACKAGES += \  
  2.   
  3.     libcsiecoder \  
  4.   
  5.     libcsiJni \  
  6.   
  7.     CSIIN  

  本身这种问题就是很初级的问题,没什么技术含量,就当做个笔记吧!


更多相关文章

  1. Android uiautomator dump 命令介绍
  2. Ant 命令行创建一个Android工程
  3. Android 源码编译如何确定模块安装的位置
  4. android 运行一个cp命令
  5. android emulator命令
  6. 启动android studio(AVD)的模拟器的命令
  7. 编译Android内核模块
  8. Android 使用ADB命令安装、卸载软件

随机推荐

  1. Errors running builder 'Android(安卓)R
  2. android画图-----DensityActivity 添加view
  3. Android动画总结 (valueAnimator、objectA
  4. 将图片存储到Sqlite和取出
  5. Android中使用adb命令获取当前打开app的
  6. Android——Service
  7. Android(安卓)-- 利用ContentProvider 读
  8. android 调研web services
  9. [译]Android架构组件 – 查看Room和LiveD
  10. Android(安卓)Studio 2.3使用CMake方式ND