当前位置: 首页 > news >正文

android-sqlite3:从官方 SQLite 源码自动构建 Android 可用的 sqlite3

GitHub 项目地址:https://github.com/0pen1/android-sqlite3

背景

在 Android 设备上调试数据库时,sqlite3命令行工具非常实用。它可以直接查看
表结构、执行 SQL、验证数据、分析 App 私有目录里的数据库文件,也适合在自动化测试
和设备排障场景里快速定位问题。

但现实情况是,很多 Android 系统和厂商 ROM 并不默认提供sqlite3命令。
即使设备有 root 权限,进入adb shell后也经常会遇到:

/system/bin/sh: sqlite3: inaccessible or not found

android-sqlite3这个项目就是为了解决这个问题:提供一个可验证、可复现、可以直接
通过adb push放到 Android 设备上运行的sqlite3命令行构建方案。

项目定位

android-sqlite3不是 SQLite 的 fork,也不维护修改版 SQLite 源码。

项目的核心目标是:

  • 从 SQLite 官方源码构建 Android 可执行文件。
  • 构建过程可追溯、可验证、可复现。
  • 通过 GitHub Actions 自动编译并发布 Release。
  • 产物可以直接在 Android 设备上通过adb shell使用。

当前支持的 ABI:

arm64-v8a armeabi-v7a x86_64

其中arm64-v8a适用于绝大多数现代 Android 手机。

为什么不直接提交 SQLite 源码?

这个项目选择不把 SQLite 源码直接提交进仓库,而是维护一个非常小的版本描述文件:

sqlite-version.env

里面固定 SQLite 版本号、官方年份目录和官方 SHA3-256 校验值。构建时脚本会从
SQLite 官方网站下载对应的 amalgamation 源码包,然后先校验 SHA3-256,校验通过后
再进入编译阶段。

这种方式有几个好处:

  • 可以清晰证明构建源码来自 SQLite 官方发布包。
  • 避免手动同步源码造成偏差。
  • 仓库保持轻量,只维护构建逻辑和版本元数据。
  • 每次构建都能重新验证源码完整性。

构建流程

项目中的构建流程分为两步:

scripts/download_sqlite.sh scripts/build_android.sh

第一步下载并校验官方源码:

SQLite official amalgamation zip ↓ SHA3-256 verification ↓ build/sqlite-amalgamation-<version>/

第二步使用 Android NDK 编译:

shell.c + sqlite3.c ↓ Android NDK clang ↓ dist/<abi>/sqlite3 ↓ dist/sqlite3-android-<version>.zip

GitHub Actions 会在 push、pull request、手动触发时自动执行构建。推送版本 tag
时,例如:

gittag v3.53.1gitpush origin v3.53.1

工作流会额外创建 GitHub Release,并上传编译好的压缩包。

Android 上如何使用

下载 Release 里的压缩包后,选择对应 ABI 的sqlite3。大多数设备使用:

arm64-v8a/sqlite3

推送到设备:

adb push arm64-v8a/sqlite3 /data/local/tmp/sqlite3 adb shellchmod755/data/local/tmp/sqlite3 adb shell /data/local/tmp/sqlite3--version

打开普通数据库:

adb shell /data/local/tmp/sqlite3 /sdcard/Download/test.db

执行 SQL:

adb shell'/data/local/tmp/sqlite3 /sdcard/Download/test.db "select sqlite_version();"'

Root 调试场景

如果设备有 root 权限,可以查看 App 私有目录下的数据库:

adb shellsu-c'/data/local/tmp/sqlite3 /data/data/<package>/databases/<db-name> ".tables"'

查询 schema:

adb shellsu-c'/data/local/tmp/sqlite3 /data/data/<package>/databases/<db-name> "select * from sqlite_master;"'

更推荐的做法是先复制数据库,再做分析:

adb shellsu-c'cp /data/data/<package>/databases/<db-name> /data/local/tmp/app.db'adb shellsu-c'chmod 644 /data/local/tmp/app.db'adb pull /data/local/tmp/app.db.

这样可以避免直接修改正在被 App 使用的数据库。

已启用能力

当前构建启用了常用 SQLite 功能:

SQLITE_THREADSAFE=1 SQLITE_ENABLE_COLUMN_METADATA SQLITE_ENABLE_DBSTAT_VTAB SQLITE_ENABLE_EXPLAIN_COMMENTS SQLITE_ENABLE_FTS4 SQLITE_ENABLE_FTS5 SQLITE_ENABLE_MATH_FUNCTIONS SQLITE_ENABLE_RTREE SQLITE_ENABLE_UNLOCK_NOTIFY SQLITE_HAVE_ZLIB=1

这意味着它不仅能执行基本 SQL,也支持 FTS5、RTREE、数学函数、dbstat 虚拟表和
zlib 相关能力。为了减少 Android 设备上的依赖问题,构建中关闭了 readline 依赖。

真机验证

当前版本已经在一台arm64-v8aAndroid 设备上验证通过:

SQLite 3.53.1 普通 shell 执行通过 root shell 执行通过 建表、插入、查询通过 FTS5 测试通过 JSON 函数测试通过 zlib 可用

这说明产物不仅能启动,也能覆盖实际调试中常见的 SQLite shell 能力。

适合哪些人使用

这个项目适合:

  • Android 逆向分析和安全研究人员。
  • Android App 开发者。
  • 测试和自动化工程师。
  • 需要在 root 设备上查看 App 数据库的调试人员。
  • 希望维护自有 Android sqlite3 构建产物的团队。

如果你只是临时在手机上使用 SQLite,也可以选择 Termux。但如果你的工作流依赖
adb shell、root 设备、自动化测试或 CI 发布产物,那么这个项目会更直接。

项目特点总结

android-sqlite3的重点不是“又编译了一个 sqlite3”,而是提供了一套清晰的构建和
验证链路:

官方源码 ↓ 官方 SHA3-256 校验 ↓ Android NDK 编译 ↓ GitHub Actions 自动构建 ↓ GitHub Release 发布 ↓ adb push 后直接运行

对于需要长期维护 Android 调试工具链的人来说,这比从不明来源下载一个二进制文件
更透明,也更容易审计。

项目地址:

https://github.com/0pen1/android-sqlite3
http://www.cnnetsun.cn/news/2584611.html

相关文章:

  • 2026 免费视频去水印工具对比、免费视频去水印工具推荐,免费用什么工具
  • Claude 4.7 Opus 智能应用落地实战指南
  • Image2 AI 创意挑战赛,灵感出圈赢大奖
  • 融合扩散模型与SMOTE:解决类别不平衡的混合增强框架DiSMHA
  • 打造全屋语音中枢:基于ESP8266的红外遥控器智能化改造实战
  • 普通人用不明白Gemini生论文插图,不如国产工具搞定AI矢量图
  • 基于语义相似度的NDN物联网服务发现优化策略
  • 仅剩72小时!Springer Nature刚更新的ChatGPT引用新规已生效——你的参考文献可能已不合规
  • 5G-Advanced NLOS识别:基于深度自编码核密度模型的信道异常检测
  • JMeter分布式压测5大配置陷阱与多机同步校验实战
  • 哔咔漫画下载器完整指南:3步打造个人离线漫画图书馆
  • 8 个搞定 RMAN 备份核查的实用 SQL 语句
  • OpenCV for Unity内存桥接与实时视觉管线实战
  • Unity il2cpp元数据解析异常根因与修复指南
  • OAuth 2.0与OpenID Connect本质区别:授权与认证的分层实践
  • STM32定时器编码器模式实战:不用外部中断,四倍频测速原来这么简单
  • 百度网盘直链解析:3分钟实现全速下载的完整指南
  • 初创团队如何利用Token Plan套餐有效控制大模型试用成本
  • 从重复劳动到智能助手:如何用Auto.js实现Android自动化革命
  • 从PLC对接到数字孪生闭环,AI Agent在离散制造中的全栈集成路径,深度拆解3类产线适配方案
  • WzComparerR2:冒险岛游戏数据提取与可视化的终极指南 [特殊字符]
  • 从硬盘分区到系统重装:一份给CS:GO玩家的‘机器码解封’完整操作清单
  • 除了Matlab自带的xcpA2L,汽车工程师还能用哪些工具链处理A2L/ASAP2文件?
  • Python运算符:身份运算符(is/is not)与双等号的区别
  • 3分钟掌握跨平台资源下载:res-downloader完整使用指南
  • ascend-boost-comm 通信加速黑科技:如何让分布式训练快如闪电?
  • 算力、伦理、接口标准三重枷锁如何被突破?揭秘中国信通院《2030AI工具白皮书》未公开数据
  • 长期使用中感受到的Taotoken服务稳定性与容灾能力
  • 别再只用鼠标了!eNSP这些隐藏快捷键,让你模拟实验效率翻倍
  • 3分钟学会使用res-downloader:全网视频音频资源一键下载的完整指南