如何在修改Android源文件后重新构建Android源代码

8

我在我的系统中有Android源代码,它运行良好。但是当我对Android源文件进行一些更改并运行“make”时,它不会生成/更新任何文件。

请纠正我如果我错了,

i)如果对其源代码进行了更改,则系统应该生成一个新的system.img文件

ii)即使我们对源代码进行了任何更改,Android内核文件-zImage文件也不会改变

另外一个问题是,如果我在/libcore中创建一个新的库文件夹,它会在编译时自动被拾取。对于在/libcore之外创建新的库文件夹,我将其路径添加到/build/core/main.mk和.classpath文件中。然而,在编译过程中仍未被拾取。请有人确认我们必须在哪里进行更改以添加/libcore之外的新库文件。

问候, Yogesh


从来没有遇到过这个问题,可能是因为我使用的是Android的MotoDev Studio(带有插件的完整eclipse安装包)http://developer.motorola.com/docstools/motodevstudio/download/。你在用什么? - Jim
2
我不打算为Android构建应用程序,而是想对Android内置文件进行一些更改并重新编译源代码,以便将其发送到模拟器上,从而可以在其上运行所有应用程序。 - JoshMachine
@JoshMachine 我也遇到了同样的问题。我在源文件中添加了一些日志并运行了 make 命令。你是如何解决这个问题的? - Ankur Bhatia
2个回答

10

这取决于您检出的确切存储库。但对于大多数存储库,以下步骤适用:

http://source.android.com/source/download.html

请注意,如果您使用最新的构建,则必须拥有64位系统。

更新:由于上述页面缺少一些重要步骤。因此,在完成“repo sync”步骤后(需要一段时间,但我假设您已经完成了源文件),请执行以下操作:

$ . build/envsetup.sh
$ lunch

最后一个命令会给您提供一个选项列表,以便选择要构建的平台。如果要为模拟器构建,请选择full-eng。否则,请选择适用于您特定设备供应商的选项。

在选择平台后,确保首先进行完整的编译,因为整个Android平台非常相互依赖。因此,您需要确保拥有所有组件。

在开发过程中,您可以通过使用以下命令快速构建单个组件:

mmm <component_directory_name>
例如:
mmm external/rsync

此外,构建系统不会将输出和中间文件与源代码放在一起。所有的东西都进入out/target目录。


你好 Vlad,如果我在源文件中进行了一些更改,比如添加了一些日志,然后执行 make 命令,那么 out/target/product 目录下的新镜像是否会包含这些更改呢? - Ankur Bhatia
抱歉,我已经很久没有进行类似的Android构建了。对于旧版本,没有图像不会改变,您必须进行完整的重建才能获取新的图像。我不知道新的Android平台在这种情况下会做什么。 - Vlad
我对AndroidManifest.xml进行了一些更改,并通过mm -B编译该应用程序,但在重新打开该文件后,我的更改消失了! - Dr.jacky

5

取决于您想要进行的更改。

在简单情况下,如果更改是本地的(例如,在现有 Android 源文件 xxx.c 中添加一些新行),则可以轻松运行:

mm -B (under the root directory of xxx.c)
adb remount
adb sync
adb reboot

在其他情况下,比如说您创建了一个新的系统服务来替换在启动时启动的旧服务,就像init.rc文件中所示。那么,您可能需要:

  1. 更新init.rc文件
  2. 构建整个Android源代码
  3. 刷入新的映像

1
一个adb root可能是必要的,以便adb remount正常工作。 adb rootadb remount仅适用于Android系统的user-debug和eng版本。 - sweisgerber.dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接