2

我第一次涉足 Android 服务时遇到了 AIDL 文件中的编译错误问题。我正在使用 Eclipse(带有 Android 开发工具)和 Android 4.1。我有以下 AIDL 文件:

天气.aidl

package ws.hamacher.weatherservice.service;

parcelable ws.hamacher.weatherservice.dto.Weather;

在此文件中,我得到“接口 ws.hamacher.weatherservice.dto.Weather 应在名为 ws\hamacher\weatherservice\service\ws.aidl 的文件中声明。” 在 parcelable 线上,但这是指我的 Java 类!

IWeatherService.aidl

package ws.hamacher.weatherservice.service;

import ws.hamacher.weatherservice.service.Weather;

interface IWeatherService {
    void addToWeatherService(in Weather weather);
    void deleteFromWeatherService(in Weather weather);
    List<Weather> getLocations();
}

在这里,import 语句再次给出了类似的错误“接口 ws.hamacher.weatherservice.dto.Weather 应在名为 ws\hamacher\weatherservice\service\ws.aidl 的文件中声明。” 这应该是指上面的第一个文件吧?

除此之外,方法声明都有错误,与“未知类型的天气”有关。

任何帮助,将不胜感激。

4

2 回答 2

2

如果要发送自定义对象,例如 Weather 类,您应该创建一个包:ws.hamacher.weatherservice.dto

写 :

天气.java

在包中:ws.hamacher.weatherservice.dto 像这样:

 public class Weather implements Parcelable {
....
}

然后,编写 Weather.aidl:

package ws.hamacher.weatherservice.dto;

parcelable Weather;

实际代码请参见AndroidMusicPlayer和 AndroidMusicPlayerClient。

于 2013-01-14T07:53:40.673 回答
0

解决了。我的 Weather.aidl 必须与我的 parcelable Weather 类位于同一目录中。

于 2013-01-23T00:31:37.827 回答