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

 更新时间:2016年08月03日 17:17:05   投稿:lqh  
本文主要讲解单独编译Android 源代码中的模块,这里对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 源码的小伙伴有所帮助!

相关文章

  • Android实现列表元素动态效果

    Android实现列表元素动态效果

    本文将利用AnimatedList组件实现列表元素的一些动态效果,例如添加元素时的渐现效果,删除元素逐渐消失的效果等,感兴趣的小伙伴可以了解一下
    2022-03-03
  • Android 百度地图POI搜索功能实例代码

    Android 百度地图POI搜索功能实例代码

    POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。通过本文给大家介绍Android 百度地图POI搜索功能实例代码,需要的朋友参考下
    2016-02-02
  • Android滑动删除数据功能的实现代码

    Android滑动删除数据功能的实现代码

    这篇文章主要介绍了Android滑动删除功能
    2017-01-01
  • 详解Android中motion_toast的使用

    详解Android中motion_toast的使用

    我们通常会用 toast(也叫吐司)来显示提示信息,例如网络请求错误,校验错误等等。本文为大家介绍一个非常有趣的toast组件 —— motion_toast,感兴趣的可以了解一下
    2022-06-06
  • Android  SharedPreferences四种操作模式使用详解

    Android SharedPreferences四种操作模式使用详解

    这篇文章主要介绍了Android SharedPreferences四种操作模式使用详解的相关资料,这里介绍了获取Android SharedPreferences的两种方法及比较,和操作模式的介绍,需要的朋友可以参考下
    2017-07-07
  • Android ViewPager实现无限循环效果

    Android ViewPager实现无限循环效果

    这篇文章主要为大家详细介绍了Android ViewPager实现无限循环效果的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Android代码检查规则Lint的自定义与应用详解

    Android代码检查规则Lint的自定义与应用详解

    本文主要介绍了Android代码检查规则Lint的自定义与应用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Android RecyclerView的简单使用

    Android RecyclerView的简单使用

    这篇文章主要为大家详细介绍了Android RecyclerView简单使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android自定义加载框效果

    Android自定义加载框效果

    这篇文章主要为大家详细介绍了Android自定义加载框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法

    android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法

    本文将介绍手机布局/界面设计/分辨率/密度相关,接下来介绍android计算pad或手机的分辨率像素等等的方法,感兴趣的朋友可以了解下,希望本文可以帮助你
    2013-01-01

最新评论