我正在首次涉足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的文件中声明。”这应该是指上面的第一个文件吗?
除此之外,方法声明都有错误,调整为“未知类型天气”。
任何帮助都将不胜感激。
答案 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在同一目录中。