[AOSP][Android-8.0]surface.aidl 从 frameworks/base 移动到 frameworks/native

[AOSP][Android-8.0]surface.aidl moved from frameworks/base to frameworks/native

在 AOSP (8.0) 源代码中,我发现 Surface.aidlframeworks/base/core/java/android/view/Surface.aidl 移动到了 frameworks/native/aidl/gui/android/view/Surface.aidl

实际上问题是我的应用程序 AIDL 需要使用 Surface class。

下面是代码片段

import android.view.Surface;

interface sampleService {
    void setSurface(in Surface sampleSurface);
}

在构建我的应用程序 AIDL 期间无法解析 Surface class。但是如果我在 frameworks/base/core/java/android/view/ 中添加 Surface.aidl class 那么我的 AIDL 编译成功并且 运行 没有错误。

现在我的问题是 frameworks/base/Android.mk 包括 frameworks/native/aidl/gui/android/view/Surface.aidl 但我的 AIDL 仍然无法导入 Surface class。

我无法找出问题所在。请帮我想办法。

这是Change Log

您需要在您的应用程序包中使用如下路径创建虚拟 Surface.aidl 文件。

src/main/aidl/android/view/Surface.aidl

在 Surface.aidl 中放入以下代码。由于 Surface 的 parcelabel class 在 frameworks/base/core/java/android/view.

中可用
package android.view;

parcelable Surface;

在您的 sampleService 接口中导入 Surface,如下所示。

   import android.view.Surface;

只需添加内部 Android.mk 及其工作方式

LOCAL_AIDL_INCLUDES += \
        frameworks/native/aidl/gui