android studio aidl couldn't find import for class

By default, AIDL supports the following data types:

  • All primitive types in the Java programming language (such as intlong,charboolean, and so on)
  • String
  • CharSequence
  • List

    All elements in the List must be one of the supported data types in this list or one of the other AIDL-generated interfaces or parcelables you've declared. A List may optionally be used as a "generic" class (for example,List<String>). The actual concrete class that the other side receives is always an ArrayList, although the method is generated to use the List interface.

  • Map

    All elements in the Map must be one of the supported data types in this list or one of the other AIDL-generated interfaces or parcelables you've declared.  Generic maps, (such as those of the formMap<String,Integer> are not supported. The actual concrete class that the other side receives is always a HashMap, although the method is generated to use the Map interface.

You must include an import statement for each additional type not listed above, even if they are defined in the same package as your interface.

如果不是AIDL数据类型,需要自己定义一个新的AIDL文件并实现parcelable接口,示例如下:

 

For example, here is a Rect.aidl file to create a Rect class that's parcelable:

package android.graphics;

// Declare Rect so AIDL can find it and knows that it implements
// the parcelable protocol.
parcelable Rect;

And here is an example of how the Rect class implements theParcelable protocol.

import android.os.Parcel;
import android.os.Parcelable;

public final class Rect implements Parcelable {

实体类的aidl应该在实体类所在的包名下




在 AOSP 中,`frameworks/base/core/java/android/app/IAvplayManager.aidl` 文件导入 `android.app.avplay.Attr` 和 `android.app.avplay.LongWrapper` 类报错找不到,可从以下方面解决: ### 文件路径与包名 确保 `Attr` 和 `LongWrapper` 类的文件位于与包名对应的目录下,即 `frameworks/base/core/java/android/app/avplay` 目录。若路径不匹配,将文件移动到正确位置。同时,检查类文件中的包声明是否为 `package android.app.avplay;`。 ### Android.mk 或 Android.bp 配置 - **Android.mk**:在 `IAvplayManager.aidl` 所在模块的 `Android.mk` 文件中,确保包含 `Attr` 和 `LongWrapper` 类的源文件。示例如下: ```makefile LOCAL_SRC_FILES := \ IAvplayManager.aidl \ avplay/Attr.java \ avplay/LongWrapper.java \ ... ``` - **Android.bp**:若使用 `Android.bp`,配置如下: ```bp java_library { name: "avplay-library", srcs: [ "IAvplayManager.aidl", "avplay/Attr.java", "avplay/LongWrapper.java", ], // 其他配置 } ``` ### 编译环境 - **清除编译缓存**:在 AOSP 根目录下执行 `make clobber` 清除编译缓存,然后重新编译。 - **检查环境变量**:确保 AOSP 编译环境变量正确设置,如 `ANDROID_BUILD_TOP`。可通过 `echo $ANDROID_BUILD_TOP` 检查,若有误,使用 `export ANDROID_BUILD_TOP=/path/to/aosp` 设置。 ### 代码问题 - **语法错误**:检查 `Attr` 和 `LongWrapper` 类文件是否存在语法错误,如拼写错误、类型不匹配等。 - **命名冲突**:确保类名唯一,避免与其他类或文件冲突。 ### 查找生成文件 若编译过程中生成了这些类的相关文件,可通过以下命令查找: ```sh cd aosp/out/soong/.intermediates find -name Attr.java find -name LongWrapper.java ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值