试图编译在Android回购中找到的AIDL文件以及我的Android项目,以使用一些内置接口。
但是,每当我进入内部类型时,就会出现以下错误:
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:129] In file ./app/src/main/aidl/android/hardware/radio/ITuner.aidl line 32 parameter config (argument 1):
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:129] unknown type
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:107] In file ./app/src/main/aidl/android/hardware/radio/ITuner.aidl line 34 return type RadioManager.BandConfig:
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:107] unknown type
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:107] In file ./app/src/main/aidl/android/hardware/radio/ITuner.aidl line 66 return type RadioManager.ProgramInfo:
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:107] unknown type
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:107] In file ./app/src/main/aidl/android/hardware/radio/ITuner.aidl line 83 return type List<RadioManager.ProgramInfo>:
aidl E 01-12 17:32:41 59280 1006000 type_namespace.cpp:107] unknown type所有内部类型都会发生这种情况。我做错了什么?
其他事情:
unknown type错误。发布于 2018-01-19 14:57:49
这些AIDL文件及其支持服务/类隐藏在公共API中,这意味着对于所有版本的Android,它们并不稳定/一致。您将无法在代码中直接使用它们来访问系统的内置服务。您必须依赖反射才能获得对其他隐藏类的访问,然后才能访问系统提供的服务的底层绑定器对象。不是便携或简单的解决方案。如果你试图在你的应用程序中重新创建系统服务,而你的应用程序只使用你的版本,那么将这些文件拖进你的应用程序是有意义的。
尽管如此,如果你试图创建这些服务是你的应用程序的一部分,那么你所需要的不仅仅是AIDL。AIDL定义了服务实现的接口,它反过来为您生成一些Java样板代码。您所看到的缺少依赖关系是因为这些不是其他服务接口,而是Parcelable类,允许将它们作为参数传递或从绑定器IPC方法返回。例如,RadioManager.BandConfig缺少的依赖项是在RadioManager.java中定义的内部类。您也需要在您的项目中使用这个类。
https://stackoverflow.com/questions/48235071
复制相似问题