【问题标题】:Flutter fails to build apk with obfuscate commandFlutter 无法使用混淆命令构建 apk
【发布时间】:2021-04-22 23:05:54
【问题描述】:

flutter build apk --release --no-shrink 我成功地创建了.apk 构建并且在物理设备aswel 上运行良好。

我正在尝试使用以下命令进行混淆,这是 Flutter 文档中推荐的方式,here

flutter build apk --obfuscate --split-debug-info=/<project-name>/<directory>

失败并抛出以下内容

FAILURE: Build failed with an exception.

* Where:
Script 'C:\Programs\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 904

* What went wrong:
Execution failed for task ':app:compileFlutterBuildRelease'.
> Process 'command 'C:\Programs\flutter\bin\flutter.bat'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 20s
Running Gradle task 'assembleRelease'...
Running Gradle task 'assembleRelease'... Done                      21.3s
Gradle task assembleRelease failed with exit code 1

Here 建议使用flutter build apk --obfuscate --split-debug-info=debug_info,这会使构建过程成功,但安装应用程序启动后崩溃。

flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 1.22.5, on Microsoft Windows [Version 10.0.17763.1697], locale en-GB)
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Android Studio (version 4.0)
[√] Connected device (1 available)

【问题讨论】:

标签: android flutter dart


【解决方案1】:

在 build.gradle 中

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.release

            shrinkResources true
            minifyEnabled true
            // useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
        }
    }

我使用msal_mobile 进行身份验证,并在我的“proguard-rules.pro”文件中添加了-keep class com.microsoft.identity.** { *; }。我从 adb logcat platform_view_android_jni_impl 中发现的错误中选择了这个。

adb logcat

01-21 18:29:20.435 17876 17876 E flutter : [ERROR:flutter/shell/platform/android/platform_view_android_jni_impl.cc(43)] java.lang.AssertionError: AssertionError (GSON 2.8.6): java.lang.NoSuchFieldException: DEFAULT
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.f.a(Unknown Source:54)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.f.a(Unknown Source:4)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.f.a(Unknown Source:9)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.f.a(Unknown Source:0)
01-21 18:29:20.435 17876 17876 E flutter :      at com.microsoft.identity.client.y.a(Unknown Source:71)
01-21 18:29:20.435 17876 17876 E flutter :      at com.microsoft.identity.client.y.a(Unknown Source:6)
01-21 18:29:20.435 17876 17876 E flutter :      at com.microsoft.identity.client.y.a(Unknown Source:5)
01-21 18:29:20.435 17876 17876 E flutter :      at com.microsoft.identity.client.w.a(Unknown Source:15)
01-21 18:29:20.435 17876 17876 E flutter :      at c.a.a.b.a(Unknown Source:16)
01-21 18:29:20.435 17876 17876 E flutter :      at c.a.a.a.a(Unknown Source:28)
01-21 18:29:20.435 17876 17876 E flutter :      at c.a.a.a.a(Unknown Source:196)
01-21 18:29:20.435 17876 17876 E flutter :      at d.a.c.a.i$a.a(Unknown Source:17)
01-21 18:29:20.435 17876 17876 E flutter :      at io.flutter.embedding.engine.e.b.a(Unknown Source:57)
01-21 18:29:20.435 17876 17876 E flutter :      at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(Unknown Source:4)
01-21 18:29:20.435 17876 17876 E flutter :      at android.os.MessageQueue.nativePollOnce(Native Method)
01-21 18:29:20.435 17876 17876 E flutter :      at android.os.MessageQueue.next(MessageQueue.java:336)
01-21 18:29:20.435 17876 17876 E flutter :      at android.os.Looper.loop(Looper.java:197)
01-21 18:29:20.435 17876 17876 E flutter :      at android.app.ActivityThread.main(ActivityThread.java:8167)
01-21 18:29:20.435 17876 17876 E flutter :      at java.lang.reflect.Method.invoke(Native Method)
01-21 18:29:20.435 17876 17876 E flutter :      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
01-21 18:29:20.435 17876 17876 E flutter :      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
01-21 18:29:20.435 17876 17876 E flutter : Caused by: java.lang.AssertionError: java.lang.NoSuchFieldException: DEFAULT
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.z.n.n$k0.<init>(Unknown Source:87)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.z.n.n$w.a(Unknown Source:29)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.f.a(Unknown Source:74)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.z.n.i.a(Unknown Source:42)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.z.n.i.a(Unknown Source:123)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.z.n.i.a(Unknown Source:22)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.f.a(Unknown Source:74)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.f.a(Unknown Source:16)
01-21 18:29:20.435 17876 17876 E flutter :      ... 20 more
01-21 18:29:20.435 17876 17876 E flutter : Caused by: java.lang.NoSuchFieldException: DEFAULT
01-21 18:29:20.435 17876 17876 E flutter :      at java.lang.Class.getField(Class.java:1604)
01-21 18:29:20.435 17876 17876 E flutter :      at c.b.b.z.n.n$k0.<init>(Unknown Source:34)
01-21 18:29:20.435 17876 17876 E flutter :      ... 27 more
01-21 18:29:20.435 17876 17876 E flutter :
01-21 18:29:20.435 17876 17876 F flutter : [FATAL:flutter/shell/platform/android/platform_view_android_jni_impl.cc(942)] Check failed: CheckException(env).
01-21 18:29:20.436 17876 17876 F libc    : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 17876 (mple.StevensPin), pid 17876 (mple.StevensPin)

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 2020-01-27
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多