【发布时间】:2018-08-08 07:56:00
【问题描述】:
首先,这可能是重复的,但我已经搜索了大量小时试图修复这个错误,但没有找到关于这个主题的页面帮助我修复我的错误。以下是我去过的一些地方:
- Android: AIDL refusing to generate code from aidl file defining parcelable
- AIDL ERROR while trying to return custom class object
- How to return a list of MyObject in android aidl file?
- Android Parcelable - Write and read ArrayList< IA > when IA is a interface
- (...)
Test.java(实现 Parcelable):
package com.app.pack.classes;
public class Test implements Parcelable {
private int test = 33;
protected Test(Parcel in) {
test = in.readInt();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(test);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<Test> CREATOR = new Creator<Test>() {
@Override
public Test createFromParcel(Parcel in) {
return new Test(in);
}
@Override
public Test[] newArray(int size) {
return new Test[size];
}
};
}
Test.aidl(声明我要发送的类):
package com.app.pack.aidl;
parcelable Test;
TestService.aidl(提供返回Test对象的方法):
package com.app.pack.aidl;
import com.app.pack.aidl.Test;
interface TestService{
Test getAll(in int[] listOfInts);
}
当我在消息 gradle build 中重建项目时,输出的错误说:
C:\Users...\TestService.java
- “错误:找不到符号类测试”
任务“:app:compileDebugJavaWithJavac”执行失败。
编译失败;有关详细信息,请参阅编译器错误输出。
当我检查 Gradle 控制台时,我发现错误与此有关:
“aidl.exe E 02-28 12:08:49 8288 4608aidl.cpp:580] 拒绝从定义 parcelable 的aidl文件生成代码”
我尝试将 Test.java 与 Test.aidl 和 TestService.aidl 放在同一个包中,但没有解决。 还尝试重新创建 Test.java 和 Test.aidl,也没有工作。 还尝试查看 android.mk 在我的项目中的位置,但没有找到,它要么不存在,要么位于我不知道的路径上。 (也找不到 jni 文件夹)。
当我尝试传递自己的对象时,有人可以帮我找到为什么aidl 不工作/失败的答案吗?当我尝试传递原始数据类型时,它可以正常工作(例如:如果我尝试传递 int 而不是 Test,它可以正常工作)。
【问题讨论】: