不了解AIDL文件中的编译错误

时间:2013-01-14 01:00:42

标签: android aidl

我正在首次涉足Android服务,并且在AIDL文件中遇到编译错误。我正在使用Eclipse(使用Android开发工具)和Android 4.1。我有以下AIDL文件:

Weather.aidl

package ws.hamacher.weatherservice.service;

parcelable ws.hamacher.weatherservice.dto.Weather;

在这个文件中,我得到“interface 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语句给出了类似的错误“interface ws.hamacher.weatherservice.dto.Weather应该在一个名为ws \ hamacher \ weatherservice \ service \ ws.aidl的文件中声明。”这应该是指上面的第一个文件吗?

除此之外,方法声明都有错误,调整为“未知类型天气”。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

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

写道:

Weather.java

包中的

:ws.hamacher.weatherservice.d喜欢这样:

 public class Weather implements Parcelable {
....
}

然后,写下Weather.aidl:

package ws.hamacher.weatherservice.dto;

parcelable Weather;

请参阅AndroidMusicPlayer和AndroidMusicPlayerClient了解真实代码。

答案 1 :(得分:0)

解决了它。我的Weather.aidl必须与我的parcelable Weather class在同一目录中。