解決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 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"開頭。。。。。

心中一萬頭草泥馬奔騰而過。。。。。

記錄此錯,以防再犯,也給別人一個參考了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章