You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter自定义SDK在Release模式启动即闪退问题咨询

问题分析与解决

不需要在pub.dev单独注册你的SDK,问题根源和这个无关——release模式闪退是Android R8代码缩减/混淆误删了SDK里的native关联方法,和你用path引入还是版本号引入没关系。

从错误日志看,java.lang.NoSuchMethodError提示找不到d4.a类的commandListener和stateListener方法,这是因为release编译时,R8会把它认为“未被使用”的方法裁剪掉,但这些方法其实是和native层绑定的,代码里没有直接的Java调用,所以被误删了。

解决步骤:

  • 在你的自定义SDK的Android模块中,创建或修改proguard-rules.pro文件,添加规则保留这些方法:
    # 用日志里显示的混淆后类名
    -keep class d4.a {
        void commandListener(long, byte[], int);
        void stateListener(long, int);
    }
    
    # 更稳妥的方式:用SDK里原始的类名(比如你的Listener类实际叫MySdkListener)
    -keep class com.yourpackage.mysdk.MySdkListener {
        void commandListener(long, byte[], int);
        void stateListener(long, int);
    }
    
  • 确保SDK的android/build.gradle中已经配置了这个proguard规则,或者把上述规则直接添加到主应用的android/app/proguard-rules.pro里。
  • 清理缓存后重新构建release包:
    flutter clean && flutter build apk --release
    

另外检查主应用的android/app/build.gradle,如果开启了minifyEnabled true和shrinkResources true,必须保证proguard规则覆盖到所有需要保留的native关联方法,否则还会出现类似问题。

内容的提问来源于stack exchange,提问作者Ltothej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:42:11