[RK3399][Android7.1] 调试笔记 --- LOCAL_PROPRIETARY_MODULE作用

本文主要记录在RK3399平台上,针对Android 7.1系统,调试Audio HAL层时遇到的问题。在系统目录下未找到audio.primary.rk30board.so,该库被放置于目录下。同时,light和power模块的库也位于同一目录。这种路径设置通过Android.mk中的LOCAL_PROPRIETARY_MODULE变量实现,它决定了模块库的生成位置,不同于常规的system/lib路径。对于未定义LOCAL_PROPRIETARY_MODULE的Camera模块,其生成路径与rk3288在Android 6.0平台相同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

调试Audio HAL层发现在out/target/product/rk3399_mid/system/lib/hw 目录下没看到
audio.primary.rk30board.so,
而是放在了out/target/product/rk3399_mid/system/vendor/lib/hw 目录下。

kris@eco:~/rk3399/out/target/product/rk3399_mid/system/vendor/lib/hw$ ls
audio.primary.rk30board.so  lights.rk3399.so  power.rk3399.so

除了Audio之外,还有light和power这两个模块的库也生成到了此目录。


路径控制主要是在Android.mk中

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := audio.primary.$(TARGET_BOARD_HARDWARE)
LOCAL_PROPRIETARY_MO
### 解析和理解 `Android.mk` 文件中的 NfcConfig 模块 #### 定义本地路径 在 `Android.mk` 中,`LOCAL_PATH` 变量用于指定当前文件所在的目录位置。对于任何模块而言,设置此变量是为了让构建系统能够找到该模块所需的资源和其他配置文件[^1]。 ```makefile LOCAL_PATH := $(call my-dir) ``` 这段代码表示获取当前 Makefile 所处的目录作为工作路径。 #### 设置模块名称 通过定义 `LOCAL_MODULE` 来命名一个特定的目标产物(如库)。对于 NfcConfig 模块来说,这里应该指定了其唯一的标识符以便于后续引用以及管理依赖关系。 ```makefile include $(CLEAR_VARS) LOCAL_MODULE := libnfcconfig ... include $(BUILD_SHARED_LIBRARY) ``` 上述片段展示了如何清除旧有属性并重新初始化一个新的共享库项目;其中 `libnfcconfig` 是给定的名字,它代表了最终产出的 .so 文件名去掉前缀后的部分。 #### 配置源码及其他选项 除了基本的信息外,还需要声明哪些 C/C++ 源文件参与编译过程: ```makefile LOCAL_SRC_FILES := nfc_config.cpp \ another_source_file.c ``` 此外还可以设定头文件搜索路径(`LOCAL_C_INCLUDES`)、预处理器宏定义(`LOCAL_CPPFLAGS`)等参数来调整编译行为[^4]。 #### 处理依赖项 当涉及到多个组件之间的交互时,则需明确指出本模块所依赖的其他静态或动态链接库。虽然这些被提及过的库并不会自动加入到编译流程里,但是为了确保应用程序正常运作,在适当的地方(比如 Application.mk)添加必要的依赖是非常重要的[^3]。 ```makefile LOCAL_STATIC_LIBRARIES := some_static_libs LOCAL_SHARED_LIBRARIES := other_shared_libraries ``` 以上就是针对 `NfcConfig` 这一具体实例下对 `Android.mk` 构建脚本的理解方式及其内部各个关键字含义说明。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值