Android 自动更新:从下载 APK 到安装的全流程
引言
在 Android 上做自动更新,没有 iOS 的 APNs,只能自己搭一套。我用了比较原始但可靠的全量 APK 下载方案,记录一下关键步骤和坑。
权限配置
先得在 manifest 里声明权限。INTERNET 不用多说。存储权限 Android 6.0 以后需要动态申请,不然文件落不了地。安装未知来源权限 Android 8.0 起也需要运行时请求。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="lgx.acc.updatedemo">
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 存储权限 (Android 6.0+ 需动态申请) -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 安装权限 (Android 8.0+ 需动态申请) -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
</manifest>
动态申请存储权限的逻辑就不展开了,网上有很多,这里记住一点:如果没申请成功,下载会悄无声息失败。
核心思路
设计上就几条:下载走子线程,UI 刷新回主线程,用 Handler 传消息,外加一个取消标志。UI 这边用 Dialog 展示进度,体验比通知栏好控制。
实现步骤
检查更新
先得有个地方判断版本号。实际项目里会请求服务端接口,这里先简化成变量。
public void checkUpdateInfo() {
// 请求服务端接口,拿到最新版本信息后与本地比较
boolean isNew = false; // 假设需要更新
if (!isNew) {
showUpdateDialog();
}
}


