gpt4 book ai didi

java - Android Studio,aidl 拒绝从定义 parcelable 的 aidl 文件生成代码。为什么?

转载 作者:行者123 更新时间:2023-11-29 02:32:11 27 4
gpt4 key购买 nike

首先,这可能是重复的,但我搜索了大量时间试图修复此错误,但找到的有关此主题的页面都没有帮助我修复错误。以下是我去过的一些地方:

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' 执行失败。

Compilation failed; see the compiler error output for details.

当我查看 Gradle Console 时,我发现错误与此有关:

“aidl.exe E 02-28 12:08:49 8288 4608 aidl.cpp:580] 拒绝从定义 parcelable 的 aidl 文件生成代码”

我尝试将 Test.java 与 Test.aidl 和 TestService.aidl 放在同一个包中,但没有解决。还尝试重新创建 Test.java 和 Test.aidl,也没有用。还试图查看 android.mk 在我的项目中的位置,但没有找到它,它要么不存在,要么在我不知道的路径上。 (也找不到 jni 文件夹)。

当我尝试传递自己的对象时,有人可以帮我找到为什么 aidl 不工作/失败的答案吗?当我尝试传递原始数据类型时,它工作得很好(例如:如果我尝试传递一个 int 而不是 Test,它就可以工作)。

最佳答案

Test.aidl 中的测试类包名称 com.app.pack.aidlcom.app.pack.classes 之间存在不匹配> 在 Java 代码中;他们需要匹配。

就我自己的项目而言,refusing to generate code 错误可以忽略;根本没有代码可以从未定义接口(interface)的文件中生成,但该工具会为所有 *.aidl 文件盲目地运行 aidl.exe

关于java - Android Studio,aidl 拒绝从定义 parcelable 的 aidl 文件生成代码。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com