Android中为子系统重新单独编译动态库的方法
来源:互联网 发布:聊天机器人对话数据库 编辑:程序博客网 时间:2024/06/05 23:38
【背景说明】
如果我们修改了 Android 系统中 kernel 目录下的代码,那么要将修改后的内容应用到设备上的话很简单,只编译 boot.img 并烧写 boot 分区就可以了,这不会花费很多时间。但如果我们修改的内容位于 frameworks/、devices/ 或者 hardware/ 等目录下的话,重新编译 system.img 和烧写 system 分区是非常花时间的。因此,我们需要寻求一种更便捷的方法,修改了哪里的代码就只编译相应模块,再将新的模块更新到设备上就可以了。Android 机制为我们提供了 mm、mma 等工具来实现这个想法。
【操作实例】
以我本次操作为例。我修改了 frameworks/av/services/audioflinger/ 目录下的 Threads.cpp 文件,查看该目录下的 Android.mk 文件可以知道 Threads.cpp 影响的是 libaudioflinger.so 动态库,那么我们在编译模块后,就应该将 libaudioflinger.so 更新到设备上,再重启设备就 OK 了。
需要注意的是,需要先在项目根目录下执行 source build/envsetup.sh 命令启用 mm 等工具后才能使用它们。另外,如果直接使用 mm 命令编译当前目录下的模块失败,可能是模块的依赖文件不存在,那么可以使用 mma 命令。mma 命令会编译当前目录下的模块及其依赖文件。
编译生成的动态库在 out/target/product/xxxx/system/lib/ 目录下。使用以下命令更新设备上的库文件:
adb push libaudioflinger.so /system/lib/
如果上方命令执行失败,提示被操作分区为 read-only 分区,那么我们需要在 root 权限下重新挂载 system 分区为可读写状态再重新 adb push 库文件到设备。命令如下:
# mount -o remount,rw /system
- Android中为子系统重新单独编译动态库的方法
- VLFeat 中SIFT算法的重新单独编译
- android源码单独编译的方法
- 单独编译android模块的方法
- 单独编译android 下的模块的方法
- 单独编译android 下的模块的方法
- 在Android核的java核心库libcore中打印log,和单独编译
- Android 解决ScrollView滑动过程中单独用ScrollTo()或单独smoothScrollTo()方法不起作用的问题
- openfire单独编译指定插件的方法
- linux交叉编译工程中,单独编译某个文件的方法
- Android4.2.2源码编译-如何把第三方的动态库重新编译到Android系统的/system/lib目录
- Android4.2.2源码编译-如何把第三方的动态库重新编译到Android系统的/system/lib目录
- 单独编译Android的image文件
- 如何编译Android源码的单独模块
- 单独编译Android的image文件
- 单独编译Android的image文件
- 单独编译Android源码的模块。
- WinCE 4.2中驱动的单独编译
- Yii无限极分类2
- 【第16周项目1-直接选择排序】
- linux 下/proc/pid文件内容详解
- 微信小程序——修改页面背景
- Laravel框架表单验证详解
- Android中为子系统重新单独编译动态库的方法
- spring security4 添加验证码
- IDEA Maven JFianl环境搭建
- 第十六周 项目一(6) 选择排序之堆排序
- MFC 组合按键实现
- Elasticsearch多语言搜索入门(一)
- 整理----通过/proc/diskstat 计算android I/O数据
- Rails中嵌套表单的解决:模型关系是一对一和一对多的情况
- 第十六周项目一 直接排序法