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

Capacitor SQLite生产环境部分设备报CapacitorSQLitePlugin:null错误求助

解决方案:Capacitor SQLite 插件在 Android 13 设备上出现 CapacitorSQLitePlugin:null 错误
  • 检查 Android 13 权限配置
    Android 13 对文件访问权限限制更严格,需在 AndroidManifest.xml 中添加必要权限:

    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
    <!-- 兼容旧版存储权限(仅针对 Android 12 及以下) -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    

    同时在代码中动态请求对应权限,确保运行时授权。

  • 确认插件初始化时机
    必须在 Capacitor 完全初始化后调用 createConnection,可通过监听 capacitorReady 事件执行数据库操作:

    import { CapacitorSQLite } from '@capacitor-community/sqlite';
    
    document.addEventListener('capacitorReady', async () => {
      const db = await CapacitorSQLite.createConnection({
        database: 'your-db-name',
        version: 1,
        encrypted: false,
        mode: 'no-encryption'
      });
    });
    
  • 修复 ProGuard/R8 混淆配置
    生产包混淆可能误删插件类,在 android/app/proguard-rules.pro 中添加排除规则:

    -keep class com.getcapacitor.community.sqlite.** { *; }
    -keep class net.sqlcipher.** { *; }
    -keep class com.getcapacitor.plugin.** { *; }
    

    添加后重新构建生产包。

  • 升级插件到兼容版本
    当前 5.4.2-2 版本可能存在 Android 13 兼容问题,尝试升级到最新稳定版:

    npm install @capacitor-community/sqlite@latest
    npx cap sync android
    
  • 调整数据库存储路径
    Android 13 限制外部存储访问,改用应用内部私有目录存储数据库,创建连接时指定路径为 DEFAULT:

    const db = await CapacitorSQLite.createConnection({
      database: 'your-db-name',
      version: 1,
      encrypted: false,
      mode: 'no-encryption',
      path: 'DEFAULT' // 使用插件默认内部路径
    });
    
  • 排查混淆影响
    临时关闭混淆构建生产包测试,修改 android/app/build.gradle:

    buildTypes {
      release {
        minifyEnabled false
        shrinkResources false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    

    若错误消失,说明是混淆规则问题,再针对性调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:25:06