Flutter应用在调试模式下可以运行,但在发布模式下会直接崩溃,且没有任何错误信息或异常。打开时就崩溃

移动开发 2026-07-08

如果这也发生在你身上,你可能想要考虑这个。

问题在于(对我而言,可能也会发生在你身上)我使用了像 ffmpeg_kit_flutter_newjust_audio. 这样的库。不知怎么的,Google的代码压缩/混淆工具R8会削减桥接类,从而导致立即崩溃。应用在调试时能工作,因为调试时R8不会运行。

buildTypes {
    release {
        signingConfig = signingConfigs.getByName("debug")
        isMinifyEnabled = false
    }
}

if there's still errors use,

buildTypes {
    release {
        signingConfig = signingConfigs.getByName("debug")
        isMinifyEnabled = false
        isShrinkResources = false
    }
}

isMinifyEnabled = false -- is the minimal solution

我一开始以为是由Impeller引起的,但事实并非如此。需要注意的是,我也不知道这是否是永久性的修复,尽管Claude说一个好的ProGuard是永久的。

解决方案

ffmpeg是一个本地编译的库,具有固定的类名/包名,因此在Java/Kotlin代码中引用它们时不能改变类名或包名。正确的修复方法是把你在 proguard-rules.pro 中使用的所有包/类都加入进来,而不是为整个应用禁用混淆。

禁用混淆也是一个永久性的修复,但这会让整个应用的代码表现不佳,运行速度可能会变慢。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章