我试图使用 Proguard 来混淆我的代码,但是当我将 minifyEnable 设置为 true 时,我的发布 apk 崩溃了。这是我的 build.gradle:
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
shrinkResources enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
multiDexKeepFile file('multidex-config.txt')
(enableProguardInReleaseBuilds 为 true)
我还尝试向 proguard-rules.pro 添加一些配置:
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class android.support.v7.app.** { *; }
-keep interface android.support.v7.app.** { *; }
但是没有成功。
日志错误:
java.lang.IllegalStateException: java.lang.NoSuchFieldException: fill
at com.horcrux.svg.b0.U(:629)
at com.horcrux.svg.l.b0(:100)
at com.horcrux.svg.l.E(:81)
at com.horcrux.svg.b0.N(:339)
at com.horcrux.svg.f0.G(:304)
at com.horcrux.svg.f0.H(:255)
at com.horcrux.svg.f0.onDraw(:106)
at android.view.View.draw(View.java:21421)
at android.view.View.updateDisplayListIfDirty(View.java:20298)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.draw(View.java:21424)
at android.view.View.updateDisplayListIfDirty(View.java:20298)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.updateDisplayListIfDirty(View.java:20289)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at android.view.View.updateDisplayListIfDirty(View.java:20289)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at android.view.View.draw(View.java:21424)
at android.widget.HorizontalScrollView.draw(HorizontalScrollView.java:1745)
at com.facebook.react.views.scroll.d.draw(:560)
at android.view.View.updateDisplayListIfDirty(View.java:20298)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.draw(View.java:21424)
at android.view.View.updateDisplayListIfDirty(View.java:20298)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.draw(View.java:21424)
at android.view.View.updateDisplayListIfDirty(View.java:20298)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.draw(View.java:21424)
at android.view.View.updateDisplayListIfDirty(View.java:20298)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.updateDisplayListIfDirty(View.java:20289)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.updateDisplayListIfDirty(View.java:20289)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.updateDisplayListIfDirty(View.java:20289)
at android.view.View.draw(View.java:21153)
at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
at com.facebook.react.views.view.f.dispatchDraw(:685)
at android.view.View.updateDisplayListIfDirty(View.java:20289)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
2021-08-04 10:35:25.577 25098-25098/com.pay4fun.app E/AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4372)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4345)
at android.view.View.updateDisplayListIfDirty(View.java:20258)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3610)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3418)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2755)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
at android.view.Choreographer.doCallbacks(Choreographer.java:790)
at android.view.Choreographer.doFrame(Choreographer.java:725)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.NoSuchFieldException: fill
at java.lang.Class.getField(Class.java:1604)
at com.horcrux.svg.b0.U(:620)
... 111 more
有人可以帮我吗? 预先感谢您!
最佳答案
您必须添加:
-keep public class com.horcrux.svg.** {*;}
在 proguard-rules.pro (android/app/proguard-rules.pro)
更多详细信息请参见 this issue
关于android - 如何在发布的apk中使用minifyEnable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68643215/