如何禁用Proguard中的方法内联? [英] How to disable method inlining in proguard?
问题描述
我的应用程序仅在Android 4.4上因此错误而崩溃
My app is crashing with this error on Android 4.4 only
致命异常:nTa:java.lang.IllegalAccessError:尝试从类Patient.healofy.vivoiz.com.healofy.userprofile.contactsync.ContactSyncManager访问类dUa $ a []在io.reactivex.plugins.RxJavaPlugins.onError + 367(RxJavaPlugins.java:367)在io.reactivex.internal.schedulers.ScheduledRunnable.run + 69(ScheduledRunnable.java:69)在io.reactivex.internal.schedulers.ScheduledRunnable.call + 57(ScheduledRunnable.java:57)在java.util.concurrent.FutureTask.run + 237(FutureTask.java:237)在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201 + 152(ScheduledThreadPoolExecutor.java:152)在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run + 265(ScheduledThreadPoolExecutor.java:265)在java.util.concurrent.ThreadPoolExecutor.runWorker + 1112(ThreadPoolExecutor.java:1112)在java.util.concurrent.ThreadPoolExecutor $ Worker.run + 587(ThreadPoolExecutor.java:587)在java.lang.Thread.run + 841(Thread.java:841)
Fatal Exception: nTa: java.lang.IllegalAccessError: tried to access class dUa$a[] from class patient.healofy.vivoiz.com.healofy.userprofile.contactsync.ContactSyncManager at io.reactivex.plugins.RxJavaPlugins.onError + 367(RxJavaPlugins.java:367) at io.reactivex.internal.schedulers.ScheduledRunnable.run + 69(ScheduledRunnable.java:69) at io.reactivex.internal.schedulers.ScheduledRunnable.call + 57(ScheduledRunnable.java:57) at java.util.concurrent.FutureTask.run + 237(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201 + 152(ScheduledThreadPoolExecutor.java:152) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run + 265(ScheduledThreadPoolExecutor.java:265) at java.util.concurrent.ThreadPoolExecutor.runWorker + 1112(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run + 587(ThreadPoolExecutor.java:587) at java.lang.Thread.run + 841(Thread.java:841)
我发现这是由于ProGuard方法内联而发生的.
I found that it is happening due to ProGuard method inlining.
我要禁用这两个:
方法/内联/短内联短方法.方法/内联/唯一内联仅调用一次的方法.
method/inlining/short Inlines short methods. method/inlining/unique Inlines methods that are only called once.
我没有专门启用它们.
有关详细答案: https://medium.com/@ericluapp/a-非法访问错误发行2c29b6ea968d的旅程
推荐答案
要完全禁用方法内联,可以将其添加到配置中
In order to disable method inlining completely you can add this to your configuration
-optimizations!method/inlining/*
这篇关于如何禁用Proguard中的方法内联?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!