接下来给大家介绍一下,怎样实现了单独编译Android源代码中的模块中
第一次下载好Android源代码后,通过在Android源代码工程下执行make命令,然后得到Android的系统镜像system.img.
那么当我们修改了android源代码中某个模块或者android源代码工程中新增了一个自己的模块。此时可以用make命令进行重新编译,不过重新编译比较浪费时间。google提供了另外的命令来进行单独模块的编译,以及重新打包到system.img镜像中的命令。
以下介绍单独编译android中模块的命令,以及打包system.img的命令。
一、首先,执行脚本文件envsetup.sh
该文件在Android源代码目录下的build目录中,在这个shell脚本中定义了hmm,croot,m,mm,mmm等function
执行命令如下:
www.linuxidc.com@Ubuntu:~/my_android$..
ild/envsetup.sh
或者
www.linuxidc.com@ubuntu:~/my_android$sourcebuild/envsetup.sh
在当前目录下输入命令hmm(android4.2版本使用hmm,其他版本貌似使用的是help命令),显示envsetup.sh提供命令
www.linuxidc.com@ubuntu:~/my_android$hmm
输出为:
Invoke".build/envsetup.sh"fromyourshelltoaddthefollowingfunctionstoyourenvironment:
-lunch:lunch<product_name>-<build_variant>
-tapas:tapas[<App1><App2>...][arm|x86|mips][eng|userdebug|user]
-croot:Changesdirectorytothetopofthetree.
-m:Makesfromthetopofthetree.
-mm:Buildsallofthemodulesinthecurrentdirectory.
-mmm:Buildsallofthemodulesinthesupplieddirectories.
-cgrep:GrepsonalllocalC/C++files.
-jgrep:GrepsonalllocalJavafiles.
-resgrep:Grepsonalllocalres/*.xmlfiles.
-godir:Gotothedirectorycontainingafile.
Lookatthesourcetoviewmorefunctions.Thecompletelistis:
addcompletionsadd_lunch_combocgrepcheck_productcheck_variantchoosecombochooseproductchoosetypechoosevariantcprojcrootfindmakefilegdbclientgdbwrapperget_abs_build_vargetbugreportsget_build_vargetlastscreenshotgetprebuiltgetscreenshotpathgetsdcardpathgettargetarchgettopgodirhmmisviewserverstartedjgrepkey_backkey_homekey_menulunch_lunchmmangrepmmmmmpidprintconfigprint_lunch_menuresgreprunhatruntestset_java_homesetpathsset_sequence_numberset_stuff_for_environmentsettitlesmoketeststacksstartviewserverstopviewserversystemstacktapastracedmdump
这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。
注:
关于source
source命令会把对应脚本中的内容读取到当前的bash解释器中,在当前的执行环境中执行;其中定义的function以及通过export声明的变量等在source执行结束之后依然存在于当前的bash环境中。比如我们常用的source.bashrc或者source/etc/profile等目的是为了引用刚刚改动过的环境变量。
分享到:
相关推荐
如何单独编译Android源代码中的模块
单独编译Android中的模块,并附上常见问题列表
本文主要讲解单独编译Android 源代码中的模块,这里对Android源码单独编译模块,做出了详细的步骤,希望能帮助研究Android 源代码的朋友
1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载Android内核源代码 1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android...
这个文章很好,涵盖了比较全面的Android源码编译的知识. 包括编译系统镜像, SDK以及单独模块和应用.
1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载Android内核源代码 1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android应用...
单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)
我的博客中《关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)》源码包
1.3.2 编译Android源代码........................................... 4 1.3.3 运行Android模拟器........................................... 5 1.4 下载、编译和运行Android内核源代码.........................
由于将SIFT,SURF这些有专利的算法单独提取到了opencv_contrib模块,因为官方给出的android sdk release版本中没有预先编译 opencv_contrib 至opencv库,要想在Android 中使用SURF, SIFT这些算法的C++实现,...
busybox for android,编译器要用arm-eabi-4.4.0.tgz。 海天雄的android系统是没有busybox的。 Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Libc,它的官方Toolchain也...再执行:mm(单独编译模块)
2.2.1 android源代码的获取和提交 18 2.2.2 android源代码结构 21 2.2.3 编译 24 .2.2.4 系统的运行 25 2.3 android sdk的开发环境 32 2.3.1 sdk的结构 32 2.3.2 windows环境sdk开发 33 2.3.3 linux环境sdk开发 42 ...
将会支持 Google 可能发布的手机操作系统或者应用软件,共同开发名为 Android 的开放源代码的移动 系 统。 谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的...
而这个SDK是从原生Android4.0源码里单独移植SQLITE模块,并将这个模块编译时加入加密方法,因为SQLITE源码中是有加密的接口,所以移植时就只需将这个预编译参数加入和一些文件即可。 这个SDK只支持Android2.1以上的...
一些示例可能具有单独的存储库,请参考下面有关该部分的链接。 博客 相关帖子可以通过以下博客找到。 等等 下面是其他示例的链接。 建立资讯 Android Studio 3.3+ 编译SDK版本= 28 目标SDK版本= 28 最低sdk...
这里的每个业务组件都是一个小的APP,它必须可以单独编译,单独打包成APK在手机上运行。 3.基础业务组件\base_components 根据是否是多项目使用以及有效隔离基础资源和数据,将该层次组件分为单项目基础组件和公共...
目前Android社区涌现出越来越多的IOC框架,ButterKnife、Dagger2、EventBus3,这些框架往往能有效帮助我们简化代码,模块解耦,相信很多人也或多或少的用过其中一些框架。但是,有没有人想过这些框架的内部原理都是...
最终目的是Android 单独抽取 WebRtc-VAD 模块,封装好JNI层,并且ndk-build出so库。 希望对大家有所帮助,有需要看JNI层实现和完整demo的,请加我V:15092216090 先来看一下vad模块的头文件,webrtc_vad.h,该...
将每个功能模块划分为单独的部分,如果您看到我们的,您会发现我们通过软件包在存储库中管理多个单独的发行版,提供以下功能模块: 项目 状态 描述 weex-toolkit的核心模块 用于快速启动官方项目的插件 用于快速...
什么是WhirlyGlobe-Maply? WhirlyGlobe-Maply是一个映射工具包,分为两部分,因此是破折号。 WhirlyGlobe部件是一个交互式3D地球仪。 Maply部分是一个交互式2D地图... 任何较新的内容都需要从源代码进行编译。 Whirly