【问题标题】:How to use minifyEnable in release apk?如何在发布 apk 中使用 minifyEnable?
【发布时间】:2021-08-03 21:58:21
【问题描述】:

我正在尝试使用 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 为真)

我还尝试在 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

有人可以帮我吗? 提前谢谢!

【问题讨论】:

    标签: android react-native proguard


    【解决方案1】:

    build gradle 应该是这样的

    minifyEnabled true
    shrinkResources true
    proguardFiles getDefaultProguardFile("proguard- 
    android.txt"), "proguard-rules.pro"
    multiDexKeepFile file('multidex-config.txt')'
    

    在混淆字段名称更改后的代码中,也许您有数据字段或任何不应混淆的类,请尝试找出

    【讨论】:

    • 非常感谢您的回复。我试过这个,但没有奏效
    猜你喜欢
    • 2015-10-15
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2023-03-09
    相关资源
    最近更新 更多