AOSP PackageManagerService 引用 Roboelectric,因此无法编译

AOSP PackageManagerService referencing Roboelectric and therefore does not compile

我构建了 AOSP 5.1。0_r3 并导入了 IntelliJ。并关注 these steps.

但是当我打开例如 PackageManagerService.java 代码时,它无法编译并且引用 external/robolectric/lib/main/android.jar/android/os/Process。例如缺少 SHELL_UID:

private static final int SHELL_UID = Process.SHELL_UID;

如果我看标准 android.jar SHELL_UID it's there。 这样的案例还有很多。这里有什么问题?

屏幕 1:

屏幕 2:

-----> 更新 2 个已解决的问题:

添加excluded-paths也发现我不得不删除Project结构中的依赖:

在 PackageManagerService.java 中它仍然无法解析符号:

-----> 更新 2 个未解决的问题:

并且在此清单(和其他清单)中它无法解析几个符号(与 Android 相关):

这不是我所知道的常见问题,因此我不完全确定您为什么会看到此错误。无论如何,为了避免 IDE 混淆,您可以将 external/roboelectric 添加到自定义 excluded-paths 文件中,这样 Idegen 就会在生成的 IDE 类路径中忽略它。

如果您还没有这些文件之一,它将位于 AOSP 树的顶级目录中,并且包含在生成过程中要排除的目录。你可以看到 built-in exclude file for example syntax.

Idegen 应该排除所有 JAR 文件,但它可能只对 out/prebuilts/.

中的文件执行此操作