如何导航Android C ++源代码

时间:2017-01-21 04:47:05

标签: android c++ android-source

我对Android如何开始活动感兴趣,以及在开始活动时如何实现淡入动画。

我可以轻松导航Java源代码,例如在GrepCode上,发现有一种覆盖活动转换的方法,这使我进入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没有返回任何内容,看起来AOSP代码库分布在多个Git repos(?)上,并且不知道要查看哪个。

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

1 个答案:

答案 0 :(得分:1)

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

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