gpt4 book ai didi

Android Binder 生成器失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:05 27 4
gpt4 key购买 nike

我已经用我的界面定义了一个 AIDL 文件。像这样:

interface IResPlugin {
int discoverType();
Map onClick( in int id, in Map state );
int getLayoutId(in int option);
int getMeasures();
String getName();
}

Eclipse 会自动在 gen 文件夹中生成 IResplugin.java,但它做错了。这是 Eclipse 生成的代码:

public java.util.Map onClick(int id, java.util.Map state) throws android.os.RemoteException
{
android.os.Parcel _data = android.os.Parcel.obtain();
android.os.Parcel _reply = android.os.Parcel.obtain();
java.util.Map _result;
try {
_data.writeInterfaceToken(DESCRIPTOR);
_data.writeInt(id);
_data.writeMap(state);
mRemote.transact(Stub.TRANSACTION_onClick, _data, _reply, 0);
_reply.readException();
_result = _reply.readHashMap(cl);
}
finally {
_reply.recycle();
_data.recycle();
}
return _result;
}

_result = _replu.readHashMap(cl) 行崩溃,因为 cl 对象不存在。如果我手动添加此行(缺少类加载器),Eclipse 会用自己生成的版本替换我的版本(同样是错误的)。

有什么想法吗?

最佳答案

它看起来像一个 bug 和 aidl,值得在 bug 跟踪器中提交一个 bug。

作为变通方法,您可以使用 Bundle 而不是 Map。

或者您可以采用的另一种方法是实现您自己的包含 Map<> 的 Parcelable 类,并将其用作返回类型。

关于Android Binder 生成器失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8013209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com