一个 Aria2 图形界面安卓应用程序
- 集成 aria2-next (原 aria2 已停止维护)
- 内置 AriaNg 1.3.14
- 多线程下载
- 支持PT/BT
- 后台下载: 前台服务 + WakeLock, 息屏和切到后台都不会中断
- 多语言支持
- 支持配置多个 aria2 RPC
- 使用响应式布局, 支持各种计算机或移动设备
- 友好的界面交互
- 支持暗色模式
-
Android 13 (API 33) 或更高
-
arm64 (aarch64) 设备
aria2-next 目前只提供 arm64 的 Android 构建, 所以 32 位设备和模拟器 (x86) 都不支持。 这比旧版本 (32 位 ARM, Android 4.1+) 支持的机型少, 是换用 aria2-next 的代价。
-
首次启动需要授予 "所有文件访问权限" (MANAGE_EXTERNAL_STORAGE)
aria2 是原生进程, 直接读写文件系统, 用不了分区存储的 MediaStore/SAF, 要往公共下载目录写文件就只能靠这个权限。因为这个权限受 Google Play 政策限制, 本应用只通过 GitHub Releases 分发。
An Aria2 GUI Android App
- Bundles aria2-next (the original aria2 is no longer maintained)
- Bundles AriaNg 1.3.14
- Multi-Thread Download
- PT/BT support
- Background downloading via a foreground service + WakeLock
- Multi-languages support
- Multi aria2 RPC host support
- Responsive design, supporting desktop and mobile devices
- User-friendly interface
- Dark theme support
- Android 13 (API 33) or newer
- arm64 (aarch64) devices only — aria2-next currently publishes only an android-arm64 build, so 32-bit devices and x86 emulators are not supported.
- All-files access (
MANAGE_EXTERNAL_STORAGE) must be granted on first launch. aria2 is a native process writing straight to the filesystem, so scoped storage (MediaStore/SAF) is not usable for it. Because that permission is restricted by Google Play policy, this app is distributed through GitHub Releases only.
APK 由 GitHub Actions 构建, 见 .github/workflows/build.yml。
推送到 master 或提 PR 会构建并上传 debug / release APK 作为 artifact;
推送 v* tag 会额外发布一个 GitHub Release。
发布签名包需要在仓库里配好这几个 secrets, 缺失时 release APK 不会被签名, tag 触发的发布任务会直接失败而不是发一个装不上的包:
| Secret | 说明 |
|---|---|
ANDROID_KEYSTORE_BASE64 |
keystore 文件的 base64 (base64 -w0 release.keystore) |
ANDROID_KEYSTORE_PASSWORD |
keystore 口令 |
ANDROID_KEY_ALIAS |
签名密钥别名 |
ANDROID_KEY_PASSWORD |
签名密钥口令 |
本地开发 (需要 Node 22、JDK 21、Android SDK 36):
npm ci
npx cordova platform add android
npm run buildApk # 或 npm run buildApk:releasewww/main.js 是 src/main.js 的 babel 产物, 不在版本控制里, 由 npm run build 生成。
cordova-android 15 起 --release 默认产出 AAB 而不是 APK, 所以上面两个脚本都带了
-- --packageType=apk。这个参数必须放在 -- 之后, 放前面会被 cordova-cli 的参数解析丢掉。
tools/verify_apk.py 会检查产出的 APK, 拦下两种"构建成功但装上不能用"的情况:
内置的 aria2 二进制没有以可解压的原生库形式打包 (那样它永远无法被执行),
以及 index.html 引用了没被打包进去的资源。
-
在设置页里改的 aria2 设置重启后会丢失。
要区分两类设置:
- AriaNg 自己的设置 (语言、主题、RPC 地址/端口/密钥、刷新间隔等) 存在 localStorage 里, 重启应用后保留, 不受影响。
- aria2 的全局设置 (「Aria2 设置」那一栏, 如
max-concurrent-downloads、dir、限速) 是通过 JSON-RPC 的changeGlobalOption发给 aria2 进程的, 只存在于进程内存中。 改完立即生效, 但重启后回到aria2.conf里的值。
要让 aria2 的设置持久化, 请直接编辑
aria2.conf(首次启动时从www/aria2/aria2.conf复制到应用私有目录, 之后不再覆盖)。原因: v1.2.0 曾用
window.saveLocalConfig把改动写回aria2.conf, 但 v1.3.0 升级内置 AriaNg 时, 上游把调用点换成了PluginsHelper.emit("aria2-config-changed", ...), 而PluginsHelper是桌面版的插件桥, Android 版从未实现。应用侧仍保留saveLocalConfig这个钩子, 但现在没有任何调用点。注意
enable-rpc、rpc-listen-all、rpc-listen-port、rpc-allow-origin-all在 AriaNg 里标记为 readonly, 设置页本来就不允许修改 (aria2 也只在启动时读取它们), 只能改aria2.conf。 -
aria2.conf默认rpc-listen-all=true且没有设置rpc-secret, 在不可信网络下 (公共 WiFi 等) 建议设置令牌, 或把rpc-listen-all改成false。 -
默认
check-certificate=false。Android 的系统根证书是散列文件目录而不是单个 PEM, aria2 的--ca-certificate用不了; 需要校验请自备一个 CA bundle, 见aria2.conf内的注释。
