diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0d08e26 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "github-actions" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 51c2a14..87a7be5 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -9,22 +9,23 @@ on: jobs: build: + if: github.actor != 'dependabot[bot]' runs-on: ubuntu-latest steps: - name: Setup Android NDK - uses: nttld/setup-ndk@v1.2.0 + uses: nttld/setup-ndk@v1.5.0 with: - ndk-version: r25b + ndk-version: r26d - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v5.0.0 - name: Run make run: make - name: Upload build artifacts - uses: actions/upload-artifact@v3.1.2 + uses: actions/upload-artifact@v4.6.2 with: path: | libs diff --git a/Makefile b/Makefile index 40aae5e..a04c3e5 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # http://www.sqlite.org/download.html -SQLITE_VERSION ?= 3420000 -SQLITE_YEAR ?= 2023 +SQLITE_VERSION ?= 3500400 +SQLITE_YEAR ?= 2025 SQLITE_BASENAME := sqlite-amalgamation-$(SQLITE_VERSION) diff --git a/README.md b/README.md index eb29e0b..0327965 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # SQLite build scripts for Android +
+ + + +[简体中文](README_zh.md) · [English](README.md) + + + +
+ This repository contains scripts to generate the following SQLite artifacts for Android: - Statically Linked CLI (`sqlite3-static`) - Dynamically Linked CLI (`sqlite3-dynamic`) @@ -28,8 +38,8 @@ Extract year and version from it and put them into the Makefile as follows: vi Makefile ... -SQLITE_VERSION ?= 3410200 -SQLITE_YEAR ?= 2023 +SQLITE_VERSION ?= 3500400 +SQLITE_YEAR ?= 2025 ... ``` diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 0000000..39abee0 --- /dev/null +++ b/README_zh.md @@ -0,0 +1,161 @@ +# SQLite 构建 for Android + +
+ + + +[简体中文](README_zh.md) · [English](README.md) + + + +
+ +此存储库包含为 Android 生成以下版本 SQLite 的脚本: +- 静态链接 命令行 (`sqlite3-static`) +- 动态链接 命令行 (`sqlite3-dynamic`) +- 静态库 (`libsqlite3.a`) +- 动态链接共享对象库 (`libsqlite3.so`) + +通过一个命令为以下 ABI 生成二进制文件,文件在以下文件夹中:`armeabi-v7`、`arm64-v8a`、`x86 `、`x86_64`。 + +## 如何通过 Github Actions 下载编译后的二进制文件 + +此项目在每次提交时都会触发 GitHub Workflows 自动编译。 +可以通过 [Actions tab](https://github.com/zjw2017/sqlite3-android/actions) 方式下载编译后的工件 + +如果 artifacts 不再可下载,因为距离上次提交已经90多天了,**请随时发送更新 SQLite 版本号的PR**,这样我就可以批准它并运行新工件的生成。 + +您也可以 fork 该存储库并在您的存储库中手动启动工作流。 + + +## 如何更新 SQLite 版本 + +从 [官方 SQLite 下载页面](http://www.sqlite.org/download.html) 获取最新的 `sqlite-amalgamation` 下载链接。 +从中提取年份和版本,并将它们放入 Makefile。例如: + +```bash +vi Makefile + +... +SQLITE_VERSION ?= 3500400 +SQLITE_YEAR ?= 2025 +... +``` + +它会为您下载和编译源代码。 + + +## 如何自行编译 + +- 安装 [Android NDK](https://developer.android.google.cn/ndk/downloads?hl=zh-cn) 并配置您的环境,以便在PATH中找到命令“ndk-build” +对于交叉编译和构建 Android 原生代码应用程序而言,这是一个必要的依赖项。 + + +- 编译命令行和库: + ```bash + make clean + make + ``` + +- 预期输出: + ```bash + ... + [armeabi-v7a] Compile thumb : sqlite3-dynamic-cli <= shell.c + [armeabi-v7a] Compile thumb : sqlite3-dynamic-cli <= sqlite3.c + [armeabi-v7a] Compile thumb : sqlite3-so <= sqlite3.c + [armeabi-v7a] SharedLibrary : libsqlite3.so + [armeabi-v7a] Executable : sqlite3-dynamic + [armeabi-v7a] Install : sqlite3-dynamic => libs/armeabi-v7a/sqlite3-dynamic + [armeabi-v7a] Install : libsqlite3.so => libs/armeabi-v7a/libsqlite3.so + [armeabi-v7a] Compile thumb : sqlite3-static-cli <= shell.c + [armeabi-v7a] Compile thumb : sqlite3-static-cli <= sqlite3.c + [armeabi-v7a] Compile thumb : sqlite3-a <= sqlite3.c + [armeabi-v7a] StaticLibrary : libsqlite3.a + [armeabi-v7a] Executable : sqlite3-static + [armeabi-v7a] Install : sqlite3-static => libs/armeabi-v7a/sqlite3-static + [arm64-v8a] Compile : sqlite3-dynamic-cli <= shell.c + [arm64-v8a] Compile : sqlite3-dynamic-cli <= sqlite3.c + [arm64-v8a] Compile : sqlite3-so <= sqlite3.c + [arm64-v8a] SharedLibrary : libsqlite3.so + [arm64-v8a] Executable : sqlite3-dynamic + [arm64-v8a] Install : sqlite3-dynamic => libs/arm64-v8a/sqlite3-dynamic + [arm64-v8a] Install : libsqlite3.so => libs/arm64-v8a/libsqlite3.so + [arm64-v8a] Compile : sqlite3-static-cli <= shell.c + [arm64-v8a] Compile : sqlite3-static-cli <= sqlite3.c + [arm64-v8a] Compile : sqlite3-a <= sqlite3.c + [arm64-v8a] StaticLibrary : libsqlite3.a + [arm64-v8a] Executable : sqlite3-static + [arm64-v8a] Install : sqlite3-static => libs/arm64-v8a/sqlite3-static + [x86] Compile : sqlite3-dynamic-cli <= shell.c + [x86] Compile : sqlite3-dynamic-cli <= sqlite3.c + [x86] Compile : sqlite3-so <= sqlite3.c + [x86] SharedLibrary : libsqlite3.so + [x86] Executable : sqlite3-dynamic + [x86] Install : sqlite3-dynamic => libs/x86/sqlite3-dynamic + [x86] Install : libsqlite3.so => libs/x86/libsqlite3.so + [x86] Compile : sqlite3-static-cli <= shell.c + [x86] Compile : sqlite3-static-cli <= sqlite3.c + [x86] Compile : sqlite3-a <= sqlite3.c + [x86] StaticLibrary : libsqlite3.a + [x86] Executable : sqlite3-static + [x86] Install : sqlite3-static => libs/x86/sqlite3-static + [x86_64] Compile : sqlite3-dynamic-cli <= shell.c + [x86_64] Compile : sqlite3-dynamic-cli <= sqlite3.c + [x86_64] Compile : sqlite3-so <= sqlite3.c + [x86_64] SharedLibrary : libsqlite3.so + [x86_64] Executable : sqlite3-dynamic + [x86_64] Install : sqlite3-dynamic => libs/x86_64/sqlite3-dynamic + [x86_64] Install : libsqlite3.so => libs/x86_64/libsqlite3.so + [x86_64] Compile : sqlite3-static-cli <= shell.c + [x86_64] Compile : sqlite3-static-cli <= sqlite3.c + [x86_64] Compile : sqlite3-a <= sqlite3.c + [x86_64] StaticLibrary : libsqlite3.a + [x86_64] Executable : sqlite3-static + [x86_64] Install : sqlite3-static => libs/x86_64/sqlite3-static + ... + ``` + + +## Artifacts 位置 + +- 命令行: + ``` + libs/armeabi-v7a/sqlite3-static + libs/armeabi-v7a/sqlite3-dynamic + libs/arm64-v8a/sqlite3-static + libs/arm64-v8a/sqlite3-dynamic + libs/x86_64/sqlite3-static + libs/x86_64/sqlite3-dynamic + libs/x86/sqlite3-static + libs/x86/sqlite3-dynamic + ``` + +- 库: + ``` + obj/local/armeabi-v7a/libsqlite3.a + obj/local/arm64-v8a/libsqlite3.a + obj/local/x86_64/libsqlite3.a + obj/local/x86/libsqlite3.a + libs/armeabi-v7a/libsqlite3.so + libs/arm64-v8a/libsqlite3.so + libs/x86_64/libsqlite3.so + libs/x86/libsqlite3.so + ``` + + +## 如何将 SQLite 推送到您的Android设备 + +将 `arm64-v8a` 替换为您需要的 ABI + +```bash +adb push libs/arm64-v8a/sqlite3-static /sdcard/sqlite3 +adb shell +mv /sdcard/sqlite3 /data/local/ +chmod 755 /data/local/sqlite3 +/data/local/sqlite3 -help +``` + +请注意,路径和权限可能因您的 Android 设备或环境而异。 + + +## Happy hacking! diff --git a/jni/Application.mk b/jni/Application.mk index bce6289..3ce17aa 100644 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -1,3 +1,4 @@ APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 APP_CPPFLAGS += -fexceptions -frtti APP_STL := c++_shared +APP_PLATFORM := android-34