gpt4 book ai didi

android - Aidl 生成失败

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

我一直在尝试将 IPC 用于多 apk 项目。

其中一个公开了一个有很多方法的服务。其中一些方法将 Parcelable 对象作为参数(或返回它们)。

我做的第一件事是为我的服务创建一个 aidl 文件。

这是此 aidl 文件的一小部分:

package com.test.myapp;    
import com.test.mylib.Settings;

interface ISettingsService {
boolean getSettings(in com.test.mylib.Settings arg1);
}

我使用 Android Studio 和 gradle,所以我将这个 aidl 文件保存在我模块的 src/main/aidl/com/test/myapp/文件夹中。

由于 Settings 对象是 Parcelable,Android 文档指出我还必须为其声明一个 aidl 文件。请注意,Settings 类位于另一个包中,因为它是在我无法修改的包含的 jar 库中定义的。

所以我创建了 src/main/aidl/com/test/myapp/Settings.aidl 文件:

package com.test.mylib;

parcelable Settings;

在构建时,编译器应该打开我的 aidl 文件并生成我可以实现的正确 ISettingsService stub 对象。问题是编译器给我这个错误:

error: cannot find symbol
_arg0 = com.test.mylib.Settings.CREATOR.createFromParcel(data);
^
symbol: variable CREATOR
location: class Settings
/.../myapp/build/source/aidl/debug/com/test/myapp/ISettingsService.java:89: error: cannot find symbol
arg1.writeToParcel(_data, 0);
^
symbol: method writeToParcel(Parcel,int)
location: variable arg1 of type Settings
2 errors
:myapp:compileDebugJava FAILED

通过读取错误,我假设编译器不理解 Settings 类是 Parcelable。

你知道为什么它不起作用吗?我阅读了很多关于此的文章,它看起来非常清晰且易于实现。

最佳答案

我知道我回复这个有点晚了,我遇到了同样的问题,其他人也可能遇到。所以我决定发布对我有用的解决方案。

我不得不重新定义我的类,使其实现 Parcelable,下面的链接包含我遵循的示例。一旦定义了所有必需的方法,我的代码就成功编译了。

http://developer.android.com/reference/android/os/Parcelable.html

泰勒

关于android - Aidl 生成失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958184/

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