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

仅Release变体中BottomSheetBehavior出现NullPointerException问题

解决Release构建中BottomSheetBehavior的NullPointerException问题

你碰到的这个问题很典型——Debug模式下一切正常,切到Release就崩溃,核心原因是ProGuard混淆破坏了BottomSheetBehavior的内部实现。Debug构建默认不开启混淆,所以依赖的类和方法都能正常初始化;而Release构建开启混淆后,BottomSheetBehavior依赖的ViewDragHelper相关代码被错误地移除或重命名,导致初始化失败出现空指针。

解决方案步骤:

1. 添加ProGuard混淆豁免规则

打开你的proguard-rules.pro文件,添加以下规则,保护BottomSheetBehavior及其依赖的类不被混淆:

如果用的是旧版Support库:

# 保留BottomSheetBehavior相关类与内部类
-keep class android.support.design.widget.BottomSheetBehavior { *; }
-keep class android.support.design.widget.BottomSheetBehavior$* { *; }
# 保留依赖的ViewDragHelper
-keep class android.support.v4.widget.ViewDragHelper { *; }

如果已经迁移到AndroidX:

# AndroidX版本的混淆规则
-keep class com.google.android.material.bottomsheet.BottomSheetBehavior { *; }
-keep class com.google.android.material.bottomsheet.BottomSheetBehavior$* { *; }
-keep class androidx.core.widget.ViewDragHelper { *; }

2. 检查BottomSheetBehavior的初始化代码

从你提供的Java代码片段看,可能遗漏了bottomSheetBehavior的关键初始化步骤——你需要通过BottomSheetBehavior.from()方法获取实例,而不是直接使用未赋值的变量。修正后的代码应该是这样:

private void setBottomSheet() {
    llBottomSheet = findViewById(R.id.bottom_sheet_layout);
    // 关键:获取BottomSheetBehavior实例
    bottomSheetBehavior = BottomSheetBehavior.from(llBottomSheet);
    bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(@NonNull View bottomSheet, int newState) {
            if (newState == BottomSheetBehavior.STATE_EXPANDED) {
                System.out.println("Inactive Device Bottom Sheet Expanded");
            }
        }

        @Override
        public void onSlide(@NonNull View bottomSheet, float slideOffset) {
            add_device_btn.animate().scaleX(1 - slideOffset).scaleY(1 - slideOffset).setDuration(0).start();
        }
    });
}

3. 重新构建Release版本

添加完规则并修正代码后,clean项目再重新构建Release变体,空指针问题应该就能解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:38:53