# androidupdater
**Repository Path**: qtghkat/androidupdater
## Basic Information
- **Project Name**: androidupdater
- **Description**: app更新版本工具类
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-25
- **Last Updated**: 2026-06-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AndroidAppUpdater
Android 应用内更新库,极简接入,零三方依赖(仅 AndroidX)。
[](https://developer.android.com)
[](https://developer.android.com/about/versions/10)
[](https://www.java.com)
## 特性
| 特性 | 说明 |
|------|------|
| 零三方依赖 | 仅依赖 `androidx.appcompat`,无需 Gson、OkHttp 等 |
| HttpURLConnection 下载 | 支持 HTTP / HTTPS,带进度回调 |
| 内置版本检测 | 一行代码完成版本检查 → 弹窗 → 下载 → 安装 |
| 简化 API | 只需 `baseUrl` + `appKey`,库自动拼接接口地址 |
| DialogFragment 弹窗 | 支持强制更新、下载进度、下载失败重试 |
| FileProvider 适配 | 库内已注册,调用方无需额外配置 |
| minSdk 29 | Android 10+,无需存储权限 |
## 快速集成
### 1. 下载 AAR
从仓库 [Releases](https://gitee.com/qtghkat/androidupdater) 下载最新 `androidupdater-{version}.aar`,放到 `app/libs/` 目录下。
### 2. 添加依赖
在 `app/build.gradle` 中:
```groovy
dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar'])
implementation 'androidx.appcompat:appcompat:1.7.0'
}
```
### 3. 添加权限
在 `AndroidManifest.xml` 中:
```xml
```
### 4. 调用
```java
UpdateManager.with(this)
.baseUrl("http://你的服务器:5050")
.appKey("company_helper")
.onUpdate(new OnUpdateListener() {
@Override public void onNoUpdate() {
// 已是最新版本
}
@Override public void onStart() {
// 开始下载
}
@Override public void onProgress(int percent) {
// 下载进度 0-100
}
@Override public void onFinish(File apkFile) {
// 下载完成,自动安装
}
@Override public void onError(Exception e) {
// 出错
}
@Override public void onCancel() {
// 用户取消
}
})
.check();
```
## API 参考
### UpdateManager
```java
UpdateManager.with(Activity activity) // 必须传入 Activity
.baseUrl("http://host:port") // 服务端基础地址
.appKey("your_app_key") // 应用标识 Key
.forceUpdate(false) // 是否强制更新(可选,默认 false)
.onUpdate(new OnUpdateListener(){}) // 回调监听
.check(); // 执行检查
```
也可使用完整 URL 模式:
```java
UpdateManager.with(activity)
.checkUrl("http://host/api/v1/check/app_key?version_code=1")
.onUpdate(listener)
.check();
```
### OnUpdateListener
| 方法 | 说明 |
|------|------|
| `onNoUpdate()` | 无可用更新 |
| `onStart()` | 开始下载 APK |
| `onProgress(int percent)` | 下载进度 0-100 |
| `onFinish(File apkFile)` | 下载完成,随后自动弹出安装 |
| `onError(Exception e)` | 检查或下载出错 |
| `onCancel()` | 用户点击"暂不更新" |
所有方法均有默认空实现,可按需覆写。
## 服务端 API 格式
库约定以下两个接口(简化模式下自动拼接):
### 版本检查
```
GET /api/v1/check/{app_key}?version_code={当前版本号}
返回:
{
"has_update": true,
"app_name": "企业助手",
"version_name": "1.2.0",
"version_code": 3,
"file_size": 12345678,
"description": "修复已知问题",
"download_url": "/api/v1/download/company_helper"
}
```
### APK 下载
```
GET /api/v1/download/{app_key}
返回:APK 文件流
```
### 配套服务端
本库配套服务端 [AppUpdateHub](https://gitee.com/qtghkat/AndroidUpdater)(Python Flask),提供 Web 管理界面,支持多 App 的 APK 上传和版本管理。
## 项目结构
```
AndroidAppUpdater/
├── updater/ # 核心库模块
│ ├── UpdateManager.java # 入口 API(Builder 模式)
│ ├── UpdateChecker.java # 版本检查(HTTP GET + JSON 解析)
│ ├── UpdateDownloader.java # APK 下载(HttpURLConnection)
│ ├── UpdateDialogFragment.java # 更新弹窗
│ ├── UpdateInfo.java # 数据模型
│ └── OnUpdateListener.java # 回调接口
├── app/ # Demo 示例
```
## License
```
MIT License
Copyright (c) 2026
Permission is hereby granted, free of charge, to any person obtaining a copy...
```