Skip to content

About

一个 Aria2 图形界面安卓客户端 | An Aria2 GUI Android App

Resources

Stars

1 star

Watchers

0 watching

Forks

 
 

Repository files navigation

AriaNg GUI for Android

一个 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 分发。


AriaNg GUI for Android

An Aria2 GUI Android App

Build Status

Features

  • 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

Requirements

  • 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.

屏幕截图 | Screenshots

点我查看


构建 | Building

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:release

www/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 引用了没被打包进去的资源。

已知问题 | Known issues

  • 在设置页里改的 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 内的注释。

About

一个 Aria2 图形界面安卓客户端 | An Aria2 GUI Android App

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages