解决AIDL的parcelable编译问题,aidl.cpp:581 refusing to generate code from aidl file defining parcelable
近期需要为App端封装一些接口,在service端收到了一包数据后,想通过AIDL传递至client,于是想到了AIDL的parcelable用法,本地代码实现的时候,出现了一个编译错误:aidl E 05-29 20:53:03 19105 19105 aidl.cpp:581] refusing to generate code from aidl file defining parcelab
·
近期需要为App端封装一些接口,在service端收到了一包数据后,想通过AIDL传递至client,于是想到了AIDL的parcelable用法,本地代码实现的时候,出现了一个编译错误:
aidl E 05-29 20:53:03 19105 19105 aidl.cpp:581] refusing to generate code from aidl file defining parcelable
网上的说法是aidl文件和java文件的包名不一致导致的,于是修改了代码,确认了包名,但是依然无法编译过,我的代码如下:
// IEcoInfo.aidl
package com.test.car.aidl;
parcelable IEcoInfo;
// IEcoInfo.java
package com.test.car.aidl;
import android.os.Parcel;
import android.os.Parcelable;
public final class IEcoInfo implements Parcelable {
private int mi_value;
private float mf_value;
private int mUnit;
public int mIgStatus;
public int mStatus;
public String mTime;
public IEcoInfo () {
mi_value = 0;
mf_value = 0.0f;
mUnit = 0;
mIgStatus = 0;
mStatus = 0;
mTime = "";
}
public IEcoInfo (Parcel in) {
readFromParcel(in);
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mi_value);
out.writeFloat(mf_value);
out.writeInt(mUnit);
out.writeInt(mIgStatus);
out.writeInt(mStatus);
out.writeString(mTime);
}
public void readFromParcel(Parcel in) {
mi_value = in.readInt();
mf_value = in.readFloat();
mUnit = in.readInt();
mIgStatus = in.readInt();
mStatus = in.readInt();
mTime = in.readString();
}
@Override
public int describeContents() {
return 0;
}
// ...省略无关实现
}
这是一个很简单的结构,然后在调试编译的时候,尽量简单化的想去发现问题,查了几个小时无果。
问了一个同事才明白这个问题的真正原因,,,,,,,文件不能以"I"开头。。。。。
心中一万头草泥马奔腾而过。。。。。
记录此错,以防再犯,也给别人一个参考了。
更多推荐
已为社区贡献1条内容
所有评论(0)