我一直在尝试将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对象是可打包的,Android文档指出我还必须为它声明一个aidl文件。注意,Settings类在另一个包中,因为它是在我不能修改的包含的jar库中定义的。
所以我创建了src/main/aidl/com/test/myapp/Settings.aidl文件:
package com.test.mylib;
parcelable Settings;在构建时,编译器应该打开我的aidl文件并生成我可以实现的适当的ISettingsService存根对象。问题是编译器给了我这个错误:
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类是可打包的。
你知道为什么它不工作吗?我读了很多关于这方面的文章,这似乎很清楚,也很容易做到。
发布于 2014-06-25 21:19:32
我知道我对这个问题的回复有点晚了,我遇到了同样的问题,其他人可能也是。因此,我决定发布对我有效的解决方案。
我必须重新定义我的类,以便它实现Parcelable,下面的链接包含了我遵循的示例。一旦定义了所有需要的方法,我的代码就成功编译了。
http://developer.android.com/reference/android/os/Parcelable.html
泰勒
https://stackoverflow.com/questions/22958184
复制相似问题