Android版本检测更新
2016-12-07 22:02
246 查看
转载自http://www.apkbus.com/blog-705730-62592.html
自从友盟的自动更新下线之后,一大批app选择了自己写更新逻辑。是的,这里的逻辑并不复杂,完全可以自己写,但是不复杂不代表不麻烦,像是否强制更新、是否能开启循环检测等功能,跟后台配合起来就显得麻烦了。
后来发现了腾讯的Bugly,他是这么介绍的:升级功能是专为App的灰度升级而开发的组件,在bugly内测页面配置好App的更新策略,策略指定的老版本App在启动时会自动检测更新并提示升级,为团队的应用分发,灰度内测提供一站式解决方案。
本文就自己写更新逻辑和集成腾讯bugly自动更新记录一下说明和代码,如果有朋友恰好需要,又恰好看到了,又恰好用上了,又恰好解决了问题,算是功德一件咯~
讲思路:一般的解决思路都是这样,进入app就开始检测更新,然后弹出Dialog告诉用户,用户点击更新按钮,开启线程下载文件,同时显示下载进度,下载完成自动弹出安装界面,用户安装完成更新。
检测更新涉及到跟后台的交互,可用json和xml说明新版本信息。
其中:
必须包括的内容有:versionCode版本号、更新说明、下载地址
可能包含的信息有:MD5值、新版本截图等
请求拿到数据之后对比本地版本号,开始后面的操作。
此处封装了一个完整的类UpdateManager来解决更新问题,以下为逻辑代码,详细实现参看文末Demo
然后只需要在想使用的类里面new出UpdateManage实例对象,在想使用的地方调用checkUpdate方法。
这里面有很多比较繁琐的内容,比如发放强制更新版本,绘制美观的更新界面,在状态栏的进度显示等等。
其实参看官方的应用升级SDK说明就很容易集成了,集成方式本身就很简单,教程也给得清楚明了。
这里也是给出思路:
1.集成jar包或者Gradle依赖,jar包下载和Gradle依赖的写法去官网看哇
2.在想要实现升级的地方配置:
3.Manifest文件加上更新弹窗的activity:
4.以及权限配置:
5.在bugly后台上传新版本的apk包,并配置更新策略。
这时候打开低于bugly后台apk里面的versionCode的旧应用,就会在三秒左右的时间里自动检测更新了。
自己写的要满足要求很麻烦,bugly算是给出来一个比较满意的方案,但是PM和UI一定要求某种效果的话,还是得自己去写这个升级策略了,终极定制化还是得落到自己手里的。
另外,Demo里面的targetSdkVersion是24,所以涉及到动态权限的问题,使用RxPermissions处理了一下。
Android-快速完成6.0运行时动态权限申请
自从友盟的自动更新下线之后,一大批app选择了自己写更新逻辑。是的,这里的逻辑并不复杂,完全可以自己写,但是不复杂不代表不麻烦,像是否强制更新、是否能开启循环检测等功能,跟后台配合起来就显得麻烦了。
后来发现了腾讯的Bugly,他是这么介绍的:升级功能是专为App的灰度升级而开发的组件,在bugly内测页面配置好App的更新策略,策略指定的老版本App在启动时会自动检测更新并提示升级,为团队的应用分发,灰度内测提供一站式解决方案。
本文就自己写更新逻辑和集成腾讯bugly自动更新记录一下说明和代码,如果有朋友恰好需要,又恰好看到了,又恰好用上了,又恰好解决了问题,算是功德一件咯~
上代码!点击打开链接
首先是跟后台配合的更新
讲思路:一般的解决思路都是这样,进入app就开始检测更新,然后弹出Dialog告诉用户,用户点击更新按钮,开启线程下载文件,同时显示下载进度,下载完成自动弹出安装界面,用户安装完成更新。检测更新涉及到跟后台的交互,可用json和xml说明新版本信息。
其中:
必须包括的内容有:versionCode版本号、更新说明、下载地址
可能包含的信息有:MD5值、新版本截图等
请求拿到数据之后对比本地版本号,开始后面的操作。
此处封装了一个完整的类UpdateManager来解决更新问题,以下为逻辑代码,详细实现参看文末Demo
12345678910111213141516171819202122232425 | public class UpdateManager { //构造方法 public UpdateManager(Context context) { this.mContext = context; } //检测更新 public void checkUpdate() { if (isUpdate()) { // 显示提示对话框 showNoticeDialog(); } } //判断更新 private boolean isUpdate() {} //显示软件更新对话框 private void showNoticeDialog() { //下载 //显示下载进度 } //安装 private void installApk() {} } |
这里面有很多比较繁琐的内容,比如发放强制更新版本,绘制美观的更新界面,在状态栏的进度显示等等。
使用腾讯bugly自动更新
其实参看官方的应用升级SDK说明就很容易集成了,集成方式本身就很简单,教程也给得清楚明了。这里也是给出思路:
1.集成jar包或者Gradle依赖,jar包下载和Gradle依赖的写法去官网看哇
2.在想要实现升级的地方配置:
Bugly.init(getApplicationContext(), "添加产品后出现的APPID", true);//bugly自动升级
3.Manifest文件加上更新弹窗的activity:
<!--腾讯bugly自动更新--> <activity android:name="com.tencent.bugly.beta.ui.BetaActivity" android:theme="@android:style/Theme.Translucent"/>
4.以及权限配置:
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_LOGS" /> <!--保存资源到SD卡--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
5.在bugly后台上传新版本的apk包,并配置更新策略。
这时候打开低于bugly后台apk里面的versionCode的旧应用,就会在三秒左右的时间里自动检测更新了。
最后的说明
自己写的要满足要求很麻烦,bugly算是给出来一个比较满意的方案,但是PM和UI一定要求某种效果的话,还是得自己去写这个升级策略了,终极定制化还是得落到自己手里的。另外,Demo里面的targetSdkVersion是24,所以涉及到动态权限的问题,使用RxPermissions处理了一下。
Android-快速完成6.0运行时动态权限申请
上代码!AutoUpdateDemo
相关文章推荐
- Android版本检测\自动更新
- Android版本检测/自动更新
- Android程序的版本检测与更新
- Android检测版本更新 实现逻辑,UI效果自己处理
- 转 android客户端版本检测更新,服务下载,通知栏显示
- Android版本检测/自动更新
- Android版本检测\自动更新 (转的别人的)
- Android版本检测与更新
- Android检测版本更新(读取apk配置文件中的版本信息)
- Android版本检测\自动更新
- Android版本检测与更新
- android客户端版本检测更新,服务下载,通知栏显示
- Android程序的版本检测与更新
- Android apk版本检测及更新
- Android版本检测\自动更新
- Android版本检测与更新
- Android 检测版本更新
- android版本自动检测更新 版本检测 自动更新 自动安装
- Android检测版本更新
- Android版本检测\自动更新