如何单独编译安卓系统源码指定模块
昨天花了一天的时间编译android系统源码,我在想要是用家里那台老爷车编译起码需要几天时间了,好了,言归正传,这篇讲怎么编译单独的app,以及重新打包system.img。单独编译我们需要用到mmm命令。
1.获取mmm命令:
在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
~/Android_Dev/Android4_4source $ . ./build/envsetup.sh
执行后可能会出现这个错误:build/envsetup.sh: 1: Syntax error: "(" unexpected 若没有请跳过。有的话执行$sudo dpkg-reconfigure dash命令,并选择“否”就能修正。
回车之后会出现一些东西。其实,这是一个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.
在这里,我们只关注mmm命令,用它编译指定模块用mmm就好了。
2.开始编译指定模块(以email app为例):
~/Android_Dev/Android4_4source $ mmm packages/apps/Email/
然后我的电脑上开始编译了,编译到了后面出现了个小问题:
make: *** No rule to make target `out/target/common/obj/JAVA_LIBRARIES/sdk_v18_intermediates/classes.jar', needed by `out/target/common/obj/APPS/Email_intermediates/classes-full-debug.jar'. Stop.
这个错误是因为我偷懒没有把系统编译完成就单独编译,这样子是不行的,于是我开始重新编译整个系统。
编译完成之后,我们可以在out/target/product/generic/system/app目录下看到Email.apk文件了。android系统自带的app都放在这个目录下,另外android系统的一些可执行文件,放在out/target/product/generic/system/lib目录下,硬件层(HAL)接口文件放在out/target/product/generic/system/lib/hw,编译好模块后,还需要重新打包system.img文件以便在模拟器上运行的时候看到效果。使用:$ make snod命令。
相关推荐
如何单独编译Android源代码中的模块
单独编译Android中的模块,并附上常见问题列表
本文主要讲解单独编译Android 源代码中的模块,这里对Android源码单独编译模块,做出了详细的步骤,希望能帮助研究Android 源代码的朋友
这个文章很好,涵盖了比较全面的Android源码编译的知识. 包括编译系统镜像, SDK以及单独模块和应用.
单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)
我的博客中《关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)》源码包
1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 重新打包Android系统镜像文件 第2章 硬件抽象层 2.1 开发Android硬件驱动程序 2.1.1 ...
1.6 单独编译和打包Android应用程序模块.......................................................... 11 1.6.1 导入单独编译模块的mmm命令............................................................... 11 ...
2.约玩交友:除了游戏陪玩功能,系统还设置了单独的语音和视频交友模块,可以通过搜索筛选、兴趣匹配等方式,让用户享受到陌生人语音和视频交友的乐趣。 3.语音聊天:选择语音房间进入,可上麦开聊。 4.技能分享:...
在opencv 3+的版本中,由于将SIFT,SURF这些有专利的算法单独提取到了opencv_contrib模块,因为官方给出的android sdk release版本中没有预先编译 opencv_contrib 至opencv库,要想在Android 中使用SURF, SIFT这些...
busybox for android,编译器要用arm-eabi-4.4.0.tgz。 海天雄的android系统是没有busybox的。 Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Libc,它的官方Toolchain也...再执行:mm(单独编译模块)
而这个SDK是从原生Android4.0源码里单独移植SQLITE模块,并将这个模块编译时加入加密方法,因为SQLITE源码中是有加密的接口,所以移植时就只需将这个预编译参数加入和一些文件即可。 这个SDK只支持Android2.1以上的...
这里的每个业务组件都是一个小的APP,它必须可以单独编译,单独打包成APK在手机上运行。 3.基础业务组件\base_components 根据是否是多项目使用以及有效隔离基础资源和数据,将该层次组件分为单项目基础组件和公共...
多语言支持:系统支持语言包功能,项目和模块都可以有单独的语言包,并且可以自动检测浏览器语言自动载入对应的语言包。 安全性十分好:WSTMall将代码开源,使用者完全掌握源代码,使开发者与使用者完全无后顾之忧...
一些示例可能具有单独的存储库,请参考下面有关该部分的链接。 博客 相关帖子可以通过以下博客找到。 等等 下面是其他示例的链接。 建立资讯 Android Studio 3.3+ 编译SDK版本= 28 目标SDK版本= 28 最低sdk...
目前Android社区涌现出越来越多的IOC框架,ButterKnife、Dagger2、EventBus3,这些框架往往能有效帮助我们简化代码,模块解耦,相信很多人也或多或少的用过其中一些框架。但是,有没有人想过这些框架的内部原理都是...
将每个功能模块划分为单独的部分,如果您看到我们的,您会发现我们通过软件包在存储库中管理多个单独的发行版,提供以下功能模块: 项目 状态 描述 weex-toolkit的核心模块 用于快速启动官方项目的插件 用于快速...
最终目的是Android 单独抽取 WebRtc-VAD 模块,封装好JNI层,并且ndk-build出so库。 希望对大家有所帮助,有需要看JNI层实现和完整demo的,请加我V:15092216090 先来看一下vad模块的头文件,webrtc_vad.h,该...