当前位置: 首页 > 编程笔记 >

单独编译Android 源代码中的模块实现方法

阮炯
2023-03-14
本文向大家介绍单独编译Android 源代码中的模块实现方法,包括了单独编译Android 源代码中的模块实现方法的使用技巧和注意事项,需要的朋友参考一下

      第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.img的命令。在继续学习Android源代码之前,就让我们先来看看这个命令吧。

      一. 首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:

      USER-NAME@MACHINE-NAME:~/Android$ .  ./build/envsetup.sh

      注意:这是一个source命令,执行之后,就会有一些额外的命令可以使用:

 - croot: Changes directory to the top of the tree.
 - m: Makes from the top of the tree.
 - mm: Builds all of the modules in the current directory.
 - mmm: Builds all of the modules in the supplied directories.
 - cgrep: Greps on all local C/C++ files.
 - jgrep: Greps on all local Java files.
 - resgrep: Greps on all local res/*.xml files.
 - godir: Go to the directory containing a file.

 这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。 

        二. 使用mmm命令来编译指定的模块,例如Email应用程序:

        USER-NAME@MACHINE-NAME:~/Android$ mmm packages/apps/Email/   

        编译完成之后,就可以在out/target/product/generic/system/app目录下看到Email.apk文件了。Android系统自带的App都放在这具目录下。另外,Android系统的一些可执行文件,例如C编译的可执行文件,放在out/target/product/generic/system/bin目录下,动态链接库文件放在out/target/product/generic/system/lib目录下,out/target/product/generic/system/lib/hw目录存放的是硬件抽象层(HAL)接口文件,后面的文章里面,我们会陆续提及到,敬请关注。 

       三. 编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。  

             USER-NAME@MACHINE-NAME:~/Android$ make snod  

      四. 参照Ubuntu上下载、编译和安装Android最新源代码一文介绍的方法运行模拟器:   

              USER-NAME@MACHINE-NAME:~/Android$ emulator

  这样一切就搞定了。

希望对研究Android 源码的小伙伴有所帮助!

 类似资料:
  • 编译solidity源代码 通过solc编译器编译solidity代码到字节码。你可以参考solidity安装文档在本地安装编译器。 编写solidity代码运行: $ solc <contract>.sol --bin --abi --optimize -o <output-dir>/ bin和ABI编译器参数都需要充分利用web3j中的智能合约。 bin,输出包含十六进制编码的solidit

  • 本文向大家介绍从源码看angular/material2 中 dialog模块的实现方法,包括了从源码看angular/material2 中 dialog模块的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文将探讨material2中popup弹窗即其Dialog模块的实现。 使用方法 引入弹窗模块 自己准备作为模板的弹窗内容组件 在需要使用的组件内注入 MatDialog 服务 调用 o

  • 下载并安装API 24源代码后,我看到在API 24中有更改的类中出现了大量编译器错误。 例如,AccessibilityService类在变量、方法、导入等方面有数百个“无法解析符号”错误。

  • 本文向大家介绍C语言实现俄罗斯方块源代码,包括了C语言实现俄罗斯方块源代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现俄罗斯方块的具体代码,供大家参考,具体内容如下 GitHub:【C语言】实现俄罗斯方块源代码 Head.h Draw.h Init.h game.h main.cpp 配置文件:RockShape.ini 更多关于俄罗斯方块的文章,请点击查看专题:《俄罗

  • 问题内容: 现在显然,解析器本身并没有什么用(除了静态分析)。我想将转换应用于AST,然后将其编译回源代码。应用转换不是什么大问题,普通的Visitor模式应该可以。 我目前的问题是如何将AST编译回源代码。我基本上看到两种可能性: 使用一些预定义的方案编译代码 保留原始代码的格式,并仅在已更改的节点上应用1.。 现在,我想专注于1.,因为2.似乎很难完成(但是,如果您有关于此的提示,我想听听他们

  • 有时,我们需要从源代码重新编译一个Kali包.幸运的是用APT下载源代码包,进行必要的修改后再用Debian工具重新编译是如此的简单.此例中,为了添加额外的Mifare Key硬编码到mifare格式化工具,我们将重新编译libfreefare这个包. 下载包的源代码 # Get the source package apt-get source libfreefare cd libfreefar