首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AIDL找不到内部类

AIDL找不到内部类
EN

Stack Overflow用户
提问于 2018-01-12 22:48:00
回答 1查看 727关注 0票数 8

试图编译在Android回购中找到的AIDL文件以及我的Android项目,以使用一些内置接口。

但是,每当我进入内部类型时,就会出现以下错误:

ITuner.aidl

代码语言:javascript
复制
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

所有内部类型都会发生这种情况。我做错了什么?

其他事情:

  • 我在正确的目录结构中复制了项目中的所有AIDL文件。
  • 除了具有内部类的文件外,所有的AIDL文件都会生成。内部类会产生unknown type错误。
  • 我在API 27平台目录中使用AIDL可执行文件。
EN

回答 1

Stack Overflow用户

发布于 2018-01-19 14:57:49

这些AIDL文件及其支持服务/类隐藏在公共API中,这意味着对于所有版本的Android,它们并不稳定/一致。您将无法在代码中直接使用它们来访问系统的内置服务。您必须依赖反射才能获得对其他隐藏类的访问,然后才能访问系统提供的服务的底层绑定器对象。不是便携或简单的解决方案。如果你试图在你的应用程序中重新创建系统服务,而你的应用程序只使用你的版本,那么将这些文件拖进你的应用程序是有意义的。

尽管如此,如果你试图创建这些服务是你的应用程序的一部分,那么你所需要的不仅仅是AIDL。AIDL定义了服务实现的接口,它反过来为您生成一些Java样板代码。您所看到的缺少依赖关系是因为这些不是其他服务接口,而是Parcelable类,允许将它们作为参数传递或从绑定器IPC方法返回。例如,RadioManager.BandConfig缺少的依赖项是在RadioManager.java中定义的内部类。您也需要在您的项目中使用这个类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48235071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档