【问题标题】:Fastest way to test modified Android source code?测试修改后的 Android 源代码的最快方法是什么?
【发布时间】:2024-01-06 10:34:01
【问题描述】:

当 Nexus 5 在我的国家/地区上市时,我将购买它。然后我想对 Android 源代码进行更改(主要是 UI)并在我的手机上运行它。

我的问题是:如何最快地测试我修改过的代码?每次更改手机后,我是否需要编译并创建一个 ROM 并刷写它,或者我可以使用模拟器并“快速构建”它吗?

澄清一下:我将下载 Android 源代码并对其进行修改。我将更改 UI 内容以使其适合我。之后我想测试我写的东西,最好是在设备中,但模拟器也是可行的。

我想测试 Android 平台的变化。因为我修改了源代码,所以我必须创建一个 ROM 并将其刷到设备上,因为 Android 系统不能作为 .apk 安装。

测试更改的最快方法是什么?每次我对源代码进行更改时都必须创建一个 ROM 并刷新它会很烦人,例如测试我的新 UI 是否相应地工作。

有什么方法可以更快地做到这一点吗?

【问题讨论】:

  • 我怀疑是否有更快的方法,您正在更改系统,每次都必须重新安装它是有意义的
  • 您具体在平台/框架的哪个位置进行更改?
  • @shoerat 我打算在 platform_frameworks_base/core/java/android/widget/ 中做一些改变
  • @Joucks 我明白了,谢谢。

标签: android testing android-source rom


【解决方案1】:

这取决于您在哪个级别进行更改。如果您正在进行 frameworks/base/core 更改,那么您可以导航到 AOSP 项目的 frameworks/base/core 部分并执行增量构建(确保您已初始化构建环境: .build/envsetup.sh 在AOSP 源目录的根目录):

mm -B

这将构建你所在的组件,这将是框架的framework.jar/ext.jar/etc

编译完成后,您可以执行以下操作(在编译期间注意错误):

adb root;
adb remount;
adb sync;
adb shell stop;
adb shell start

这将更新设备上的框架 jar 文件,然后您应该能够看到您的更改。

注意

如果您当前的构建与您正在构建的 AOSP 代码相同,这将起作用,否则您必须将 framework.jar 文件推送到系统中/framework/ 设备的一部分(需要 root)。

【讨论】:

  • 感谢您的回答。不过,我只是想确认一切的工作方式,如果我更改 frameworks/base/core,构建它并接收包含该目录中所有内容的 .jar 文件,然后我将该 .jar 文件移动到系统,然后“重新启动”或“重新加载”.jar?当然它会重新加载更多,就像所有组件一样?
  • framework.jar 替换将用新的framework.jar 替换实现,所以是的。您必须通过 shell stop 和 shell start 重新启动 zygote 以加载新的 framework.jar 文件。
  • 再次感谢您的详细解答!
  • 我知道这是一个迟到的回复,但我尝试了以下方法,但它不起作用。如果需要,请参考此question
  • 实际上我得到了这个工作,但不知道如何。上面粘贴的其他答案顶部的更多详细信息。
【解决方案2】:

我认为修改后最好重新编译整个源代码。
我建议使用AOSP 而不是破解工厂映像,不需要ROM,只需flush 与ADB。
第一次构建会占用大量的时间和空间,但是android构建系统在rebuild时只会构建修改后的代码。
注意:默认情况下 GPS、Sensor 不起作用,因为 AOSP 中不包含第三方设备驱动程序。

【讨论】:

    最近更新 更多