首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aidl生成失败

Aidl生成失败
EN

Stack Overflow用户
提问于 2014-04-09 17:25:46
回答 1查看 4.1K关注 0票数 2

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

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

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

下面是这个aidl文件的一小部分:

代码语言:javascript
复制
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对象是可打包的,Android文档指出我还必须为它声明一个aidl文件。注意,Settings类在另一个包中,因为它是在我不能修改的包含的jar库中定义的。

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

代码语言:javascript
复制
package com.test.mylib;

parcelable Settings;

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

代码语言:javascript
复制
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类是可打包的。

你知道为什么它不工作吗?我读了很多关于这方面的文章,这似乎很清楚,也很容易做到。

EN

回答 1

Stack Overflow用户

发布于 2014-06-25 21:19:32

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

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

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

泰勒

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

https://stackoverflow.com/questions/22958184

复制
相关文章

相似问题

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