Tencent / tinker

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
Other
17.1k stars 3.33k forks source link

android 4.4.2 使用sdk 1.9.9运行时找不到ApplicationLike,需要在gradle中手写multiDexKeepProguard #940

Open SJpro opened 5 years ago

SJpro commented 5 years ago

异常类型:app运行时异常

手机型号:

手机系统版本:Android 4.4.2

tinker版本:1.9.9

gradle版本:3.2.0和3.1.4

是否使用热更新SDK:无

系统:Mac

堆栈/日志: TinkerUncaughtHandler catch exception:java.lang.RuntimeException: Unable to instantiate application (包名手动隐藏).App: com.tencent.tinker.loader.TinkerRuntimeException: Tinker Exception:createDelegate failed at android.app.LoadedApk.makeApplication(LoadedApk.java:516) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4514) at android.app.ActivityThread.access$1500(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5292) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) at dalvik.system.NativeStart.main(Native Method) Caused by: com.tencent.tinker.loader.TinkerRuntimeException: Tinker Exception:createDelegate failed at com.tencent.tinker.loader.app.TinkerApplication.createDelegate(TinkerApplication.java:115) at com.tencent.tinker.loader.app.TinkerApplication.ensureDelegate(TinkerApplication.java:121) at com.tencent.tinker.loader.app.TinkerApplication.onBaseContextAttached(TinkerApplication.java:135) at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(TinkerApplication.java:152) at android.app.Application.attach(Application.java:181) at android.app.Instrumentation.newApplication(Instrumentation.java:991) at android.app.Instrumentation.newApplication(Instrumentation.java:975) at android.app.LoadedApk.makeApplication(LoadedApk.java:511) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4514)  at android.app.ActivityThread.access$1500(ActivityThread.java:151)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)  at android.os.Handler.dispatchMessage(Handler.java:110)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:5292)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.ClassNotFoundException: (包名手动隐藏).(包名手动隐藏)ApplicationLike at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:251) at com.tencent.tinker.loader.app.TinkerApplication.createDelegate(TinkerApplication.java:109) at com.tencent.tinker.loader.app.TinkerApplication.ensureDelegate(TinkerApplication.java:121)  at com.tencent.tinker.loader.app.TinkerApplication.onBaseContextAttached(TinkerApplication.java:135)  at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(TinkerApplication.java:152)  at android.app.Application.attach(Application.java:181)  at android.app.Instrumentation.newApplication(Instrumentation.java:991)  at android.app.Instrumentation.newApplication(Instrumentation.java:975)  at android.app.LoadedApk.makeApplication(LoadedApk.java:511)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4514)  at android.app.ActivityThread.access$1500(ActivityThread.java:151)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)  at android.os.Handler.dispatchMessage(Handler.java:110)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:5292)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.NoClassDefFoundError: (包名手动隐藏)/(包名手动隐藏)ApplicationLike at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:251)  at com.tencent.tinker.loader.app.TinkerApplication.createDelegate(TinkerApplication.java:109)  at com.tencent.tinker.loader.app.TinkerApplication.ensureDelegate(TinkerApplication.java:121)  at com.tencent.tinker.loader.app.TinkerApplication.onBaseContextAttached(TinkerApplication.java:135)  at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(TinkerApplication.java:152)  at android.app.Application.attach(Application.java:181)  at android.app.Instrumentation.newApplication(Instrumentation.java:991)  at android.app.Instrumentation.newApplication(Instrumentation.java:975)  at android.app.LoadedApk.makeApplication(LoadedApk.java:511)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4514)  at android.app.ActivityThread.access$1500(ActivityThread.java:151)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)  at android.os.Handler.dispatchMessage(Handler.java:110)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:5292)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.ClassNotFoundException: Didn't find class "(包名手动隐藏).(包名手动隐藏)ApplicationLike" on path: DexPathList[[zip file "/data/app/(包名手动隐藏).(包名手动隐藏)-2.apk"],nativeLibraryDirectories=[/data/app-lib/(包名手动隐藏).(包名手动隐藏)-2, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:251)  at com.tencent.tinker.loader.app.TinkerApplication.createDelegate(TinkerApplication.java:109)  at com.tencent.tinker.loader.app.TinkerApplication.ensureDelegate(TinkerApplication.java:121)  at com.tencent.tinker.loader.app.TinkerApplication.onBaseContextAttached(TinkerApplication.java:135)  at com.tencent.tinker.loader.app.TinkerApplication.attachBaseContext(TinkerApplication.java:152)  at android.app.Application.attach(Application.java:181)  at android.app.Instrumentation.newApplication(Instrumentation.java:991)  at android.app.Instrumentation.newApplication(Instrumentation.java:975)  at android.app.LoadedApk.makeApplication(LoadedApk.java:511)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4514)  at android.app.ActivityThread.access$1500(ActivityThread.java:151)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)  at android.os.Handler.dispatchMessage(Handler.java:110)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:5292)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)  at dalvik.system.NativeStart.main(Native Method) 

luoyou592 commented 5 years ago

请问解决了没?

SJpro commented 5 years ago

按我标题说的改 clean下。直接run 在8.0机型上 再在4.4机型上run 还是会报这错,需要重新clean。。。很坑

liangxianshen commented 5 years ago

遇到了同样的问题,只出现在5.0以下的机型上,而且拆开apk,maindex里是有这个class的 d8 已开启 aapt2 已开启 gradle:3.2.1 系统:Mac as版本:3.2.1

https://github.com/BuglyDevTeam/Bugly-Android-Demo/issues/115

wu928320442 commented 5 years ago

现在解决了吗?我也有这个问题。5.0一下。手动配置没有配置,文档说1.9.9以后不用配置了。不过是有问题的。

niemj commented 5 years ago

请问怎么解决的?我也在android 4.4.2上 碰到同样的问题。

SJpro commented 5 years ago

as 升级3.4后,用tinker,启动app就会crash。现在还是放弃吧,坐等5月底的版本再看看

wu928320442 commented 5 years ago

早已解决 我回复下吧 增加 multiDexKeepProguard file('proguard_tinker_multidexkeep.cfg') cfg的内容是tinker生成的拿出来放项目中就好了,一般不会改变。目前as3.3.2也正常。