如何浏览 Android 个 C++ 源代码

How to navigate Android C++ sources

我很感兴趣 Android 如何启动活动,以及在启动 activity 时如何实现淡入动画。

我可以轻松浏览 Java 来源,例如在 GrepCode 上,发现有一种方法可以覆盖 activity 转换,这将我带到了 IActivityManager.java,它定义了:

public int startActivities(
  IApplicationThread caller, String callingPackage, ...);

还有:

public void overridePendingTransition(
  IBinder token, String packageName, int enterAnim, int exitAnim);

这两个都使用 RPC 常量调用本机代码,例如:

int START_ACTIVITIES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+120;

我的问题是:在哪里可以找到实现 startActivitiesoverridePendingTransition 的实际 C++ 代码?

Google returns 什么都没有,看起来 AOSP 代码库分布在多个 Git 存储库(?)中,不知道要查看哪个。

一般来说,如何从 Java 接口导航到该接口的 C++ 实现?

相应的方法在frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java中实现。转到此文件,您将找到方法的实现。

这种不寻常的位置解释如下。在 ActivityManagerService 的情况下,Binder 接口是手动实现的,没有使用 .aidl 描述。接口 IActivityManager.javaActivityManagerNative.java 中的抽象 class ActivityManagerNative 实现,其实际实现实际上在 ActivityManagerService.java 中提供。