Technology · 2018 年 5 月 30 日 0

[Android] Log 出现 java.lang.LinkageError 时可能有用的解决方法

Stack message:

01-21 07:24:21.955 24149-24182/com.xxx.xxxx E/AndroidRuntime: FATAL EXCEPTION: remote connection
Process: com.xxx.xxxx, PID: 24149
java.lang.LinkageError: Class com.xxx.xxxx.IRemoteModule$Stub$Proxy method void com.xxx.xxxx.IRemoteModule$Stub$Proxy.register(com.xxx.xxxx.IModuleCallback, int, int) resolves differently in interface com.xxx.xxxx.IRemoteModule: Parameter 0 type mismatch: java.lang.Class<com.xxx.xxx.IModuleCallback,dalvik.system.PathClassLoader>(0x12f9cfb0) vs java.lang.Class<com.xxx.xxx.IModuleCallback,null>(0x12f3d3e0) (declaration of 'com.xxx.xxxx.IRemoteModule$Stub$Proxy' appears in /data/app/(******)/base.apk)
(*********************************)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)

stackoverflow上有人说是重复引入jar包导致的问题,这可能这只是一种情况,对于我是另一种情况。

解决方法:可能需要添加对dex分包的支持。
在application的build.gradle中打开multiDex

dependencies com.android.support:multidex

重写attachBaseContext方法