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

开启minifyEnabled后引用混淆AAR的Android App出现ExceptionInInitializerError崩溃

问题根因

你引入的CSRMesh库本身已经完成混淆,你的项目开启minifyEnabled=true后,ProGuard/R8对CSRMesh库的代码进行了二次混淆、成员删除或代码优化,导致库内部静态初始化逻辑执行失败,抛出java.lang.ExceptionInInitializerError异常。

可行解决方案

1. 配置CSRMesh专属混淆规则

在你的项目proguard-rules.pro文件中添加以下规则,完全保留CSRMesh库的所有代码不被二次处理:

# 保留CSRMesh库所有类和成员不被混淆、删除
-keep class com.csr.** { *; }
# 禁止打印CSRMesh库相关的编译警告
-dontwarn com.csr.**
# 若库内部使用了Parcelable序列化,额外添加以下规则避免序列化失败
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
# 若库内部使用了枚举,额外添加以下规则保留枚举方法
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

2. 额外检查项

  • 如果你自己实现了CSRMesh库提供的接口(例如自定义Bearer回调、事件监听等),需要额外为你自己的实现类添加keep规则,避免库调用你的实现方法时找不到对应方法:
    -keep class 你自己的实现类全路径 { *; }
    
  • 若使用高版本AGP默认开启R8全量压缩,可以在gradle.properties中添加临时配置验证是否是R8优化过度导致:
    android.enableR8.fullMode=false
    

3. 验证规则生效

打包Release包后,打开项目路径下build/outputs/mapping/release/seeds.txt文件,搜索MeshService、BluetoothBearer等库核心类,确认这些类存在于文件中,即代表规则生效,库代码不会被混淆处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 18:54:00