Java Android minifyEnabled=true shrinkResources=true保持应用程序崩溃

Java Android minifyEnabled=true shrinkResources=true保持应用程序崩溃,java,android,android-studio,android-gradle-plugin,Java,Android,Android Studio,Android Gradle Plugin,Google Play发布网站中的以下异常。如果我minifyEnabled false shrinkResources=false。应用程序运行良好 FATAL EXCEPTION: ControllerMessenger Process: MyApp, PID: 27778 java.lang.RuntimeException: Unable to start activity ComponentInfo{MyApp/MyApp.GridLayoutActivity}: java.l

Google Play发布网站中的以下异常。如果我minifyEnabled false shrinkResources=false。应用程序运行良好

    FATAL EXCEPTION: ControllerMessenger
Process: MyApp, PID: 27778
java.lang.RuntimeException: Unable to start activity ComponentInfo{MyApp/MyApp.GridLayoutActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at androidx.test.espresso.base.Interrogator.a(Interrogator.java:19)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:166)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:158)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:34)
    at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:77)
    at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:52)
    at androidx.test.espresso.action.Tap.c(Tap.java:8)
    at androidx.test.espresso.action.Tap.b(Tap.java:18)
    at androidx.test.espresso.action.Tap$1.a(Tap.java:3)
    at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:20)
    at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:9)
    at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:79)
    at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:96)
    at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId 'MyApp'
        minSdkVersion 24
        targetSdkVersion 26
        versionCode 36
        versionName "0.81"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {

        release {
            minifyEnabled true
            useProguard true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.BethakjiAppSign
            android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${applicationId}.apk"
                }
            }


        }
    }
proguard-rules.pro-我添加了一些保持,但仍然不起作用

-keepclassmembers class android.support.design.internal.BottomNavigationMenuView {
    boolean mShiftingMode;
}
-keep class com.shockwave.**
-keep class android.support.v7.widget.SearchView { *; }
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-keep class vn.hunghd.flutterdownloader.**  { *; }
-keep class com.baseflow.permissionhandler.**  { *; }   
build.gradle-我尝试使用minifyEnabled false和shrinkResources false,然后工作正常

    FATAL EXCEPTION: ControllerMessenger
Process: MyApp, PID: 27778
java.lang.RuntimeException: Unable to start activity ComponentInfo{MyApp/MyApp.GridLayoutActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at androidx.test.espresso.base.Interrogator.a(Interrogator.java:19)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:166)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:158)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:34)
    at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:77)
    at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:52)
    at androidx.test.espresso.action.Tap.c(Tap.java:8)
    at androidx.test.espresso.action.Tap.b(Tap.java:18)
    at androidx.test.espresso.action.Tap$1.a(Tap.java:3)
    at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:20)
    at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:9)
    at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:79)
    at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:96)
    at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId 'MyApp'
        minSdkVersion 24
        targetSdkVersion 26
        versionCode 36
        versionName "0.81"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {

        release {
            minifyEnabled true
            useProguard true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.BethakjiAppSign
            android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${applicationId}.apk"
                }
            }


        }
    }

尝试在proguard中为
java.lang
添加规则。大概是这样的:

-keep class java.lang.** { *; }

它在调试模式下工作,因为应用程序未使用发布证书签名。如果从Android Studio运行release flavor,则可以在发布之前测试发布版本。通过这种方式,应用程序将被签名,您可以在您的设备上运行它并通过应用程序。根据所使用的库,您可能需要向proguard添加更多规则。

您需要将/proguard-rules.pro更改为此

#Flutter Wrapper
 -keep class com.shockwave.**
 -keep class io.flutter.app.** { *; }
 -keep class io.flutter.plugin.**  { *; }
 -keep class io.flutter.util.**  { *; }
 -keep class io.flutter.view.**  { *; }
 -keep class io.flutter.**  { *; }
 -keep class io.flutter.plugins.**  { *; }
在/android/app/build.gradle中添加这个

buildTypes {
    release {
        signingConfig signingConfigs.debug
        minifyEnabled true
        shrinkResources false
        useProguard true 
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

如果您想使用minifyEnabled=true shrinkResources=true,请编写适当的proguard。请共享您的
build.gradle
proguard rules.pro
files.build.gradle和proguard-rules.pro更新。创建一个签名的APK/捆绑包并在本地进行测试,这很可能是proguard问题或R8。调试时,它在本地工作正常。它只是在上传到google play后失败了。