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

Android项目无明确诱因出现NullPointerException问题求助

解决Android项目中Perf服务引发的NullPointerException

这个问题我之前在处理厂商定制机型的项目时遇到过,别担心——这不是你的代码直接导致的异常,而是Android系统自带的Perf性能监控组件在访问应用私有目录时出了问题,以下是具体的排查和解决步骤:

  • 先搞懂错误本质:
    你看到的E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException是系统Perf服务在尝试获取应用性能文件目录大小时报错。它会自动扫描应用的内部存储目录,但如果这些目录未被正确初始化或者访问异常,就会抛出空指针,而且这个异常栈不会关联到你的业务代码,所以找不到具体位置完全正常。

  • 解决方案1:提前初始化应用私有目录
    Perf服务会访问应用的files或cache私有目录,我们可以在Application初始化阶段主动确保这些目录存在:

    public class MyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            // 确保私有文件目录存在
            File filesDir = getFilesDir();
            if (!filesDir.exists()) {
                boolean created = filesDir.mkdirs();
                Log.d("AppInit", "Files dir created: " + created);
            }
            // 确保缓存目录存在
            File cacheDir = getCacheDir();
            if (!cacheDir.exists()) {
                boolean created = cacheDir.mkdirs();
                Log.d("AppInit", "Cache dir created: " + created);
            }
        }
    }
    

    记得在AndroidManifest里注册这个自定义Application类。

  • 解决方案2:禁用系统Perf的性能监控
    部分厂商定制的系统中,Perf服务会主动监控应用性能,我们可以通过Manifest的meta-data直接禁用它:

    <application ...>
        <meta-data
            android:name="android.performance.mode"
            android:value="disable" />
        <!-- 其他组件配置 -->
    </application>
    
  • 解决方案3:排查第三方库干扰
    有些第三方性能监控SDK、热修复插件或者打包工具可能会修改应用的目录结构,导致Perf服务无法正常扫描。可以尝试暂时移除可疑的第三方依赖,重新运行项目看错误是否消失,逐步定位问题源。

  • 解决方案4:Android 10+适配兜底
    如果你的应用目标SDK是29及以上,虽然这个错误和外部存储无关,但可以尝试开启遗留外部存储访问权限作为兜底尝试:

    <application
        android:requestLegacyExternalStorage="true"
        ...>
    </application>
    

需要注意的是,这个错误不会影响应用的核心业务逻辑,只是系统组件的日志报错,所以你之前看到其余代码运行正常是完全符合预期的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:27:33