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

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

背景

在 Android 设备上调试数据库时,sqlite3 命令行工具非常实用。它可以直接查看

表结构、执行 SQL、验证数据、分析 App 私有目录里的数据库文件,也适合在自动化测试

和设备排障场景里快速定位问题。

但现实情况是,很多 Android 系统和厂商 ROM 并不默认提供 sqlite3 命令。

即使设备有 root 权限,进入 adb shell 后也经常会遇到:

text 复制代码
/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:

text 复制代码
arm64-v8a
armeabi-v7a
x86_64

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

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

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

text 复制代码
sqlite-version.env

里面固定 SQLite 版本号、官方年份目录和官方 SHA3-256 校验值。构建时脚本会从

SQLite 官方网站下载对应的 amalgamation 源码包,然后先校验 SHA3-256,校验通过后

再进入编译阶段。

这种方式有几个好处:

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

构建流程

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

sh 复制代码
scripts/download_sqlite.sh
scripts/build_android.sh

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

text 复制代码
SQLite official amalgamation zip
        ↓
SHA3-256 verification
        ↓
build/sqlite-amalgamation-<version>/

第二步使用 Android NDK 编译:

text 复制代码
shell.c + sqlite3.c
        ↓
Android NDK clang
        ↓
dist/<abi>/sqlite3
        ↓
dist/sqlite3-android-<version>.zip

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

时,例如:

sh 复制代码
git tag v3.53.1
git push origin v3.53.1

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

Android 上如何使用

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

text 复制代码
arm64-v8a/sqlite3

推送到设备:

sh 复制代码
adb push arm64-v8a/sqlite3 /data/local/tmp/sqlite3
adb shell chmod 755 /data/local/tmp/sqlite3
adb shell /data/local/tmp/sqlite3 --version

打开普通数据库:

sh 复制代码
adb shell /data/local/tmp/sqlite3 /sdcard/Download/test.db

执行 SQL:

sh 复制代码
adb shell '/data/local/tmp/sqlite3 /sdcard/Download/test.db "select sqlite_version();"'

Root 调试场景

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

sh 复制代码
adb shell su -c '/data/local/tmp/sqlite3 /data/data/<package>/databases/<db-name> ".tables"'

查询 schema:

sh 复制代码
adb shell su -c '/data/local/tmp/sqlite3 /data/data/<package>/databases/<db-name> "select * from sqlite_master;"'

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

sh 复制代码
adb shell su -c 'cp /data/data/<package>/databases/<db-name> /data/local/tmp/app.db'
adb shell su -c 'chmod 644 /data/local/tmp/app.db'
adb pull /data/local/tmp/app.db .

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

已启用能力

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

text 复制代码
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-v8a Android 设备上验证通过:

text 复制代码
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",而是提供了一套清晰的构建和

验证链路:

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

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

更透明,也更容易审计。

项目地址:

text 复制代码
https://github.com/0pen1/android-sqlite3
相关推荐
平头哥技术团队1 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
冬木家居2 小时前
40㎡客厅变形记,小家住出大自由[特殊字符]
android·经验分享·笔记·智能家居·微信公众平台
Mr.朱鹏2 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
qiuhaipeng13 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
AFinalStone3 小时前
Android 7系统无障碍服务(六)输入事件拦截与 TouchExplorer
android·无障碍服务
天空之城--3 小时前
MT管理器Android逆向工程完全指南:从入门到实战
android
wxwx_bscxy3223 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
Anhty4 小时前
2026九月最新变声器测评:iOS安卓双端适配,低延迟运行更稳定
android·人工智能·功能测试·ios·智能手机
剑之所向4 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库