1、报错信息如下:
/zygote: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
因为项目中使用的api等级和虚拟机api等级不一致导致的, 我项目中build.gradle sdk api用的28,虚拟机用的27,然后项目中用了28中的功能,虚拟机没有这个功能,所以报错了,修改虚拟机的api等级改成28就行了
implementation 'com.android.support:appcompat-v7:26.1.0'依赖也改成对应的版本
2、AIDL调用过程中,_reply.readExcption()报空指针问题。报错如下:
ERROR/AndroidRuntime(9435): FATAL EXCEPTION: main
ERROR/AndroidRuntime(9435): java.lang.NullPointerException
ERROR/AndroidRuntime(9435): at android.os.Parcel.readException(Parcel.java:1328)
ERROR/AndroidRuntime(9435): at android.os.Parcel.readException(Parcel.java:1276)
这种问题一般都是服务端Service业务逻辑处理的时候报错了,仔细检查一下代码吧。引起这个报错的原因很多,看看服务端的问题。
3、Binder内存限制是1m-8k, 为什么一次调用最大传输数据只有大约507k?
Binder分配的内存是1m, 但是实际上一次调用超过大约507k,就会抛出TransactionTooLarge异常。
原因:Binder的线程池数量默认是15个,由15个线程共享这1MB-8KB的内存空间,所以实际传输大小并没有那么大