如何单独编译Android源代码中的模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何单独编译Android源代码中的模块相关的知识,希望对你有一定的参考价值。
1.make 模块名称需要查看Android.mk文件的LOCAL_PACKAGE_NAME变量。
2.mmm命令
用于在源码根目录编译指定模块,参数为模块的相对路径。只能在第一次编译后使用。比如要编译Phone部分源码,需要在终端中执行以下命令:
$mmm packages/apps/phone
3.mm命令
用于在模块根目录编译这个模块。只能在第一次编译后使用。例如要编译Phone部分源码,需要在终端中执行以下命令:
$cd packages/apps/phone
$mm
注:mmm和mm命令必须在执行“.build/envsetup.sh”之后才能使用,并且只编译发生变化的文件。如果要编译模块的所有文件,需要-B选项,例如mm -B。 参考技术A Android源码目录下的build/envsetup.sh文件,描述编译的命令
- 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.
要想使用这些命令,首先需要在android源码根目录执行. build/envsetup.sh 脚本设置环境
m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件
下面举个例子说明,假设我要编译android下的\hardware\libhardware_legacy\power模块,当前目录为源码根目录,方法如下:
1、. build/envsetup.sh
2、mmm hardware/libhardware_legacy/power/
编译完后 运行 make snod
会重新将你改过的模块打入到system.img中
为啥编译时库模块中的包不存在,即使 Android Studio 显示代码中没有错误?
【中文标题】为啥编译时库模块中的包不存在,即使 Android Studio 显示代码中没有错误?【英文标题】:Why do packages from library module does not exist upon compilation, even when Android Studio shows no errors in code?为什么编译时库模块中的包不存在,即使 Android Studio 显示代码中没有错误? 【发布时间】:2015-05-01 23:56:29 【问题描述】:我的 libs/AndEngine 文件夹中有一个库模块 (AndEngine)。该代码编译得很好。
在我的根 settings.gradle 文件中,我有这个:
include ':app:libs:AndEngine'
include ':app'
然后在我的应用程序的 build.gradle 文件中,我在依赖项中有这个:
compile project('libs:AndEngine')
在我的应用程序代码中,所有导入甚至自动完成都可以正常工作,没有任何错误。在 Android Studio 中,可以找到所有包。但是当我去编译时,我得到了大约一百个这样的错误:
error: package org.andengine.entity.primitive does not exist
import org.andengine.entity.primitive.Rectangle;
我来自 Eclipse 的 ADK,所以我是 android studio 的新手。如果有人对此问题有任何答案,我将非常感激!
【问题讨论】:
【参考方案1】:改变这一行。
compile project('libs:AndEngine')
在
compile project(':app:libs:AndEngine')
在任何情况下,将库模块放在应用程序模块中都不是一个好主意。 我建议你使用这种结构:
root
settings.gradle
app
build.gradle
libs
AndEngine
build.gradle
然后在你的settings.gradle
include ':libs:AndEngine'
include ':app'
在你的app/build.gradle
compile project(':libs:AndEngine')
【讨论】:
我做的完全一样,但不会出错!还有什么问题!以上是关于如何单独编译Android源代码中的模块的主要内容,如果未能解决你的问题,请参考以下文章
实现自己的HAL-7 Android 系统的各个模块的单独编译
为啥编译时库模块中的包不存在,即使 Android Studio 显示代码中没有错误?
如何将库的本地副本添加和编译到 Android React Native 模块中?