[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7464":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":34,"discoverSource":35},7464,"AppUpdate","azhon\u002FAppUpdate","azhon","Android App update library.  Android版本更新库，简单、轻量、可随意定制","",null,"Kotlin",2455,354,43,1,0,2,29.65,"Apache License 2.0",false,"main",true,[24,25,26,27,28,29,30],"android","apk","app-update","high-scalability","kotlin","kotlin-coroutines","simple","2026-06-12 02:01:39","## [English Doc](https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002FREADME-EN.md)\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Flogo.png\">\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FminiSdk-16%2B-blue.svg\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FmavenCentral-4.3.6-brightgreen.svg\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fauthor-azhon-%23E066FF.svg\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache2.0-orange.svg\">\n\u003C\u002Fp>\n\n## 如果你是Flutter，请使用[flutter_app_update](https:\u002F\u002Fgithub.com\u002Fazhon\u002Fflutter_app_update)\n\n> [!NOTE]\n> ### 本库核心逻辑（必读）：\n> #### 1、当调用了`apkVersionCode()`设置了最新的VersionCode，则内部会自动判断是否显示对话框、下载和安装\n> - 适配Android 13通知运行权限，且当设置`showNotification(true)`时，点击对话框的升级按钮会申请通知栏权限，无论是否同意都将会继续下载\n> - 当设置强制更新`forcedUpgrade(true)`时，显示的对话框会显示下载进度条\n> #### 2、当没有调用`apkVersionCode()`，就可以把它当成一个下载器，内部只会进行下载和安装\n> #### 3、由于Android 10限制后台应用启动Activity，所以下载完成会发送一个通知至通知栏（忽略showNotification的值，需要允许发送通知）\n> #### 4、[更多用法请点此查看](https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fazhon\u002Fapp\u002FMainActivity.kt#L79)\n\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fupgrade_link.png\" width=\"300\">\n\n### 如果有需要使用[UpgradeLink](http:\u002F\u002Fupgrade.toolsetlink.com)的可以[查阅此文档](http:\u002F\u002Fupgrade.toolsetlink.com\u002Fupgrade\u002Fexample\u002Fandroid-appupdate-example.html)\n\n### 相关文档链接\n- [限制后台启动Activity](https:\u002F\u002Fdeveloper.android.google.cn\u002Fguide\u002Fcomponents\u002Factivities\u002Fbackground-starts)\n- [通知栏适配](https:\u002F\u002Fdeveloper.android.google.cn\u002Fguide\u002Ftopics\u002Fui\u002Fnotifiers\u002Fnotifications?hl=zh-cn)\n\n## 目录\n\n* [效果图](#效果图)\n* [功能介绍](#功能介绍)\n* [Demo下载体验](#demo下载体验)\n* [扫码加入QQ群](#扫码加入qq群)\n* [使用步骤](#使用步骤)\n* [使用技巧](#使用技巧)\n* [常见问题](#常见问题)\n* [版本更新记录](#版本更新记录)\n* [赞赏](#赞赏)\n\n### 效果图\n\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fzh\u002Fzh_1.png\" width=\"300\">　\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fzh\u002Fzh_2.png\" width=\"300\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fzh\u002Fzh_3.png\" width=\"300\">　\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fzh\u002Fzh_4.png\" width=\"300\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fzh\u002Fzh_5.png\" width=\"300\">　\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fzh\u002Fzh_6.png\" width=\"300\">\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fzh\u002Fzh_7.png\" width=\"300\">\n\n### 功能介绍\n\n* [x] 支持Java、Kotlin\n* [x] 支持AndroidX\n* [x] 支持后台下载\n* [x] 支持强制更新\n* [x] 支持自定义下载过程\n* [x] 支持Android4.1及以上版本\n* [x] 支持通知栏进度条展示，适配到Android 13\n* [x] 支持中文\u002F繁体\u002F英文语言（国际化）\n* [x] 支持自定义内置对话框样式\n* [x] 支持取消下载(如果发送了通知栏消息，则会移除)\n* [x] 支持下载完成，打开新版本后删除旧安装包文件\n* [x] 不需要申请存储权限\n* [x] 使用HttpURLConnection下载，未集成其他第三方框架\n\n### Demo下载体验\n\n [点击下载Demo进行体验](https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Freleases\u002Ftag\u002Fdemo)\n\n### 扫码加入QQ群\n- 或者添加加微信：hb958460248（备注 AppUpdate）\n- 611136880\n- 828385813（已满）\n\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fqq_group_0.jpg\" width=\"200\"> \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fqq_group_1.jpg\" width=\"200\">\n\n\n### 使用步骤\n\n#### 第一步：`app\u002Fbuild.gradle`添加依赖\n\n```groovy\nimplementation 'io.github.azhon:appupdate:4.3.6'\n```\n\n\u003Cdetails>\n\u003Csummary>由于GooglePlay政策禁止应用内更新，所以可以通过多渠道的方式进处理\u003C\u002Fsummary>\n\n- [GooglePlay政策](https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F9888379?hl=en&ref_topic=9877467)\n- 本库提供了一个没有任何实现的版本[点击查看详细内容](https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fapp\u002Fbuild.gradle)\n```groovy\nandroid {\n    \u002F\u002F...\n    productFlavors {\n        other {}\n        googlePlay {}\n    }\n}\n\ndependencies {\n    otherImplementation 'io.github.azhon:appupdate:latest-version'\n    googlePlayImplementation 'io.github.azhon:appupdate-no-op:latest-version'\n}\n```\n\u003C\u002Fdetails>\n\n#### 第二步：创建`DownloadManager`\n\n\u003Cdetails open>\n\u003Csummary>Kotlin\u003C\u002Fsummary>\n\n```java\nval manager = DownloadManager.Builder(this).run {\n    apkUrl(\"your apk url\")\n    apkName(\"appupdate.apk\")\n    smallIcon(R.mipmap.ic_launcher)\n    \u002F\u002F设置了此参数，那么内部会自动判断是否需要显示更新对话框，否则需要自己判断是否需要更新\n    apkVersionCode(2)\n    \u002F\u002F同时下面三个参数也必须要设置\n    apkVersionName('v4.2.2')\n    apkSize(\"7.7MB\")\n    apkDescription(\"更新描述信息(取服务端返回数据)\")\n    \u002F\u002F省略一些非必须参数...\n    build()\n}\nmanager?.download()\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Java\u003C\u002Fsummary>\n\n```java\nDownloadManager manager = new DownloadManager.Builder(this)\n        .apkUrl(\"your apk url\")\n        .apkName(\"appupdate.apk\")\n        .smallIcon(R.mipmap.ic_launcher)\n        \u002F\u002F设置了此参数，那么内部会自动判断是否需要显示更新对话框，否则需要自己判断是否需要更新\n        .apkVersionCode(2)\n        \u002F\u002F同时下面三个参数也必须要设置\n        .apkVersionName(\"v4.2.2\")\n        .apkSize(\"7.7MB\")\n        .apkDescription(\"更新描述信息(取服务端返回数据)\")\n        \u002F\u002F省略一些非必须参数...\n        .build();\nmanager.download();\n```\n\u003C\u002Fdetails>\n\n#### 第三步：混淆打包，只需保持`Activity`、`Service`不混淆\n\n```groovy\n-keep public class * extends android.app.Activity\n-keep public class * extends android.app.Service\n```\n\n### 使用技巧\n\n* 框架内部支持国际化（其他语言只需要在对应的`string.xml`中取相同的名字即可）\n* 如果你需要修改框架内部的一些文字，你只需要在`string.xml`中取相同的名字即可以覆盖框架内设定的\n* 查看版本库中的Log只需要过滤`AppUpdate`开头的Tag\n* 支持校验安装包的MD5避免重复下载，只需要`Builder`设置安装包的MD5即可\n* 下载完成 打开新版本后删除旧安装包文件\n\n```java\n\u002F\u002F旧版本apk的文件保存地址\nval result = ApkUtil.deleteOldApk(this, \"${externalCacheDir?.path}\u002Fappupdate.apk\")\n```\n\n* 温馨提示：升级对话框中的内容是可以上下滑动的哦！\n* 如果需要实现自己一套下载过程，只需要继承`BaseHttpDownloadManager`\n\n```java\nclass MyDownload : BaseHttpDownloadManager() {}\n```\n### 常见问题\n\n* App设置是横屏时下载完成无法拉起安装问题，可以在Manifest中对应的Activity添加如下代码\n\n```xml\n android:configChanges=\"orientation|screenSize|keyboardHidden\"\n```\n\n### 版本更新记录\n\n* v4.3.6（2024\u002F10\u002F22）\n\n  * [优化] 修改DownloadManager的release()函数访问权限\n\n* [更多更新记录点此查看](https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fwiki\u002FHome)\n\n### 赞赏\n> 如果这个库有帮助到你并且你很想支持库的后续开发和维护，那么你可以扫描下方二维码随意打赏我，我将不胜感激[赞赏列表](https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fwiki\u002F%E8%B5%9E%E8%B5%8F%E5%88%97%E8%A1%A8)\n\n\n\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fazhon\u002FAppUpdate\u002Fblob\u002Fmain\u002Fimg\u002Fmoney.jpg\" width=\"600\"\u002F>\n","azhon\u002FAppUpdate 是一个用于 Android 应用版本更新的库，具有简单、轻量及高度可定制的特点。它支持使用 Kotlin 编写，并兼容 Java 与 AndroidX，能够处理从后台下载 APK 到强制用户更新的一系列操作。该库还提供了丰富的自定义选项，如自定义对话框样式、显示通知栏进度等，同时适配了Android 13的通知运行权限要求。此外，它无需额外申请存储权限即可工作，且不依赖于任何第三方框架。此项目非常适合需要实现应用内版本更新功能的开发者使用，在确保用户体验的同时也保证了应用的安全性和稳定性。","2026-06-11 03:12:36","top_language"]