【Android 基础】APP更新方法浅析

本文探讨了Android应用的更新流程,从获取当前APK版本、对比服务器最新版本、决定是否更新到下载安装的过程。关键在于比对versionCode,通过设置活动和工具类实现自动检查更新功能。
摘要由CSDN通过智能技术生成

没深入学习app更新这块的时候,觉得app更新有点神秘!
正是这种神秘感,迫使我去探究下:究竟app更新是怎么实现的呢!!
废话不多说,先上效果图!
如果有新版本,自动提示:
这里写图片描述
点击更新,通知栏显示下载进度:
这里写图片描述
这里写图片描述
下载安装好后,再去 设置 那点击 检查更新,将会有相应提示:
这里写图片描述

任何开发都离不开思路:

1.获取当前APK的版本
2.去服务器上获取最
新的版本
3.对比后,决定是否更新。
4.更新,去服务器上下载apk.
5.下载后,保存到sd卡,然后安装apk

分析:获取的apk版本是versionCode还是versionName呢?

获取的apk版本是versionCode还是versionName呢?
对比下AndroidManifest.xml 和 build.gradle 文件里面的
versionCode 和 versionName
其中可以查阅资料如下:
versionCode——整数值,代表应用程序代码的相对版本,也就是版本更新过多少次。整数值有利于其它程序比较,检查是升级还是降级。你可以把这个值设定为任何想设的值,但是,你必须保证后续更新版的值要比这个大。系统不会强制要求这一行为,但是随着版本更新值也增加是正常的行为。一般来说,你发布的第一版程序的versionCode设定为1,然后每次发布都会相应增加,不管发布的内容是较大还是较小的。这意味着versionCode不像应用程序的发布版本(看下面的versionName)那样显示给用户。应用程序和发布的服务不应该显示这个版本值给用户。
versionName——字符串值,代表应用程序的版本信息,需要显示给用户。与versionCode一样,系统不会为了任何内部的目的使用这个值,除了显示给用户外。发布的服务也需要提取这个值来显示给用户。

这样想必都很清楚只需要比对versionCode即可了。

(1)获得当前APK版本

    /*
     * 取得程序的当前 versionCode
     */
    public static int getNowVerCode(Context context) {
        int verCode = 0;
        try {
            verCode = context.getPackageManager()
                    .getPackageInfo(context.getPackageName(), 0).versionCode;
        } catch (PackageManager.NameNotFoundException e) {

        }
        return verCode;
    }
    /*
     * 取得程序的当前 versionName
     */
    public static String getNowVerName(Context context){
        String VerName = "";
        try{
            VerName = context.getPackageManager()
                    .getPackageInfo(context.getPackageName(), 0).versionName;
        }catch (PackageManager.NameNotFoundException e){

        }
        return VerName;
    }

(2)去服务器获取最新版本

思路:
服务器的一个路径下存放我最新版的apk,供下载。
一个配置文件,说明我最新apk的versionCode以供客户端对比
如下:
这里写图片描述
(便捷起见)我服务端木有写代码,简单的响应即可。

客户端核心代码如下:

SettingActivity.java


public class SettingActivity extends AppCompatActivity {
   
    version mVersion;
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值