🌐 English | 中文
-
简单:在 ~500 行内完成开箱即用的自更新流程
-
灵活:为方便替换而解耦的更新模块
-
Kotlin 哲学:提供最快捷的
droidUp {}
构造器来秒速配置更新
// 项目 build.gradle(/build.gradle)
allprojects {
repositories {
// ...
maven { url 'https://jitpack.io' }
}
}
// 模块 build.gradle(/app/build.gradle)
dependencies {
implementation 'com.ilharper:droidup:latest.version.here'
// 或者使用最新的快照
// implementation 'com.ilharper:droidup:master-SNAPSHOT'
}
在 MainActivity
加载完成后运行:
droidUp {
useSimpleChecker("https://my.app/releases")
}.check()
完成!DroidUp 会自动在后台线程内检查更新,在发现新版本时提示用户, 下载并校验 apk 文件,最后安装新的 App。
DroidUp
按照顺序调用以下 Handler:
var checker: (DroidUpContext) -> DroidUpInfo
checker
用来检查新版本。
useSimpleChecker()
是 checker
的默认实现。
首先,在你的静态站或 CDN 上创建一个 latest.json
文件
(比如这样的 → https://my.app/releases/latest.json
):
{
"version": 8, // apk 的 versionCode
"url": "./app-8.apk", // 可以是相对或绝对路径
"hash": "YVbrfcHla+8RriE+h2qIMavqIq/s0noO8mpIHerDHHxBYRVEgWrVV96CGSx9GbHYCUKw2EMIiCLVsvyjWtshFw==", // 默认为 SHA512
"size": 60294047, // long
"releaseNote": "Add new features" // 将会在「发现新版本」对话框中显示
}
我们提供了一个 droidup-gen CLI
来从 apk 文件自动生成 latest.json
。
然后,使用 useSimpleChecker()
设置更新源:
droidUp {
+ useSimpleChecker("https://my.app/releases")
}
Apk 的下载 url 会被解析为 https://my.app/releases/app-8.apk
。
如果你想使用更复杂的 API 解析更新或有其他需求,
可以自己实现 checker
,然后
droidUp {
+ checker = myCustomChecker
}
var comparator: (DroidUpContext) -> Boolean
comparator
用来判断服务器上的版本号是否更新。
useSimpleComparator()
是 comparator
的默认实现,
无需手动调用。
useSimpleComparator()
只有在服务器的 DroidUpInfo.version
大于 当前 App 的版本时才会触发更新。
使用自定义的 comparator
:
droidUp {
+ comparator = myCustomComparator
}
var prompter: (DroidUpContext, () -> Unit) -> Unit
prompter
用来弹出更新对话框。
useSimplePrompter()
是 prompter
的默认实现,
无需手动调用。
useSimplePrompter()
使用 AlertDialog
。
使用自定义的 prompter
来定制对话框:
droidUp {
+ prompter = myCustomPrompter
}
var downloader: (DroidUpContext, (File) -> Unit) -> Unit
downloader
用来下载 apk 文件。
useSimpleDownloader()
是 downloader
的默认实现,
无需手动调用。
它会在下载时显示进度条通知。
使用自定义的 downloader
:
droidUp {
+ downloader = myCustomDownloader
}
var verifier: (DroidUpContext) -> Boolean
verifier
用来对下载好的 apk 进行哈希校验。
useSimpleVerifier()
是 verifier
的默认实现,
无需手动调用。
它使用 base64 加密的 SHA-512 哈希串。
使用自定义的 verifier
:
droidUp {
+ verifier = myCustomVerifier
}
var installer: (DroidUpContext) -> Unit
installer
is for installing app.
useSimpleInstaller()
是 installer
的默认实现,
无需手动调用。
如果你想使用 ROOT 权限自动安装或有其他需求,
可以使用自定义的 installer
:
droidUp {
+ installer = myCustomInstaller
}
推荐使用 DroidUp.default
单例:
DroidUp.default = (DroidUp.default ?: (droidUp {
useSimpleChecker("https://my.app/releases")
})).check()
这样 DroidUp
实例就不会被多次创建。
使用 check(true)
在检查更新时弹出 Toast:
droidUp {
useSimpleChecker("https://my.app/releases")
}.check(true)
DroidUp.check()
会自动使用当前活动的 Activity。
使用 check(activity)
手动指定 Activity:
droidUp {
useSimpleChecker("https://my.app/releases")
}.check(activity)
请自由创建 Issues!
我们欢迎 PR!请自由对项目做出贡献。
请参阅 Releases
MIT