admin管理员组文章数量:1558098
今天,简单讲讲android里如何在app内部直接使用服务器进行版本更新。
昨天,我讲了如何使用应用市场进行版本更新。但是使用应用市场进行版本更新存在一个问题,就是app无法获取应用市场里app的版本信息,所以使用应用市场进行版本更新时,需要搭一个服务器给app可以获取到应用市场最新的app的版本信息。
这里大家其实想到了吧,既然可以通过服务器获取app的版本信息,那么也可以直接通过服务器下载最新的app进行版本更新,目前我看到大部分app是这样做的,比如应用宝,支付宝这些app。我之前查找了版本更新的资料也是这些内容,这里记录一下。
一.版本的基础知识
版本控制的属性包括versionCode和versionName。
(一)versionCode
版本号(versionCode)是相对比较重要的一个属性。versionCode是一个Integer类型的值。所以大家在设置的时候,不要将versionCode设置的太大,最好不要超过Integer的取值范围(当然一般也是不会超过的),一般大家在发布自己的第一个应用到市场的时候,版本取值为1(versionCode=1),这也是目前典型和普遍的做法。然后,每次发布更新版本时可以递增versionCode的值。
(二)versionName
版本名(versionName)一个值为String类型的属性,一般和VersionCode成对出现。VersionCode是方便程序开发者运行和维护Application而设置的一个有效的值。versionName是一个版本的描述,给用户看的,也是用户放在各个第3方平台上提供给使用者看的一个版本名,可以说是对VersionCode的解释和描述。一般格式可以为:1.1.2。(major.minor.point)的形式。
(三)版本控制小结
版本号(versionCode)是用于判断是否升级的,一般每次版本更新,版本号加一。如果获取服务器上的版本号比检测到本程序的版本号高,那么提示升级。
版本名(versionName)用于显示版本改变的幅度大小,比如从2.0.1改变为2.0.2可能只是修改了一个很小的debug,如果改变为2.1.0可能是新增了一些功能,如果改变为3.0.0可能是有很大幅度的修改,比如很多UI界面或功能的添加!
也就是版本号用于判断是否可以升级,而版本名用于显示給用户看!
(四)版本控制的文件位置
这个要区分你是用Eclipse开发还是Studio开发。
在Eclipse中本控制的属性的位置是Manifest.xml中,如:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:andro
android:versionCode="3"
android:versionName="1.2.1"
package="com.example.updateDemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
。。。
</application>
</manifest>
上面表示android的第三个版本程序,版本名:1.2.1
在Android Studio呢?也是可以在Manifest.xml中定义versionCode和versionName,但是这里设置是无效的!
需要在程序的build.grade文件中设置,图解:
上面表示android的第三个版本程序,版本名:3.0.1
(五)版本信息的获取,代码
这里指的是获取运行中的程序的版本号,代码如下:
/*
* 获取当前程序的版本名
*/
private String getVersionName() throws Exception{
//获取packagemanager的实例
PackageManager packageManager = getPackageManager();
//getPackageName()是你当前类的包名,0代表是获取版本信息
PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(), 0);
Log.e("TAG","版本号"+packInfo.versionCode);
Log.e("TAG","版本名"+packInfo.versionName);
return packInfo.versionName;
}
/*
* 获取当前程序的版本号
*/
private int getVersionCode() throws Exception{
//获取packagemanager的实例
PackageManager packageManager = getPackageManager();
//getPackageName()是你当前类的包名,0代表是获取版本信息
PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(), 0);
Log.e("TAG","版本号"+packInfo.versionCode);
Log.e("TAG","版本名"+packInfo.versionName);
return packInfo.versionCode;
}
简单讲讲,其实版本更新就是首先获取到服务器的版本号与版本名称,然后获取app自己的版本号和版本名称,进行比较。如果服务器的版本号大于app
版权声明:本文标题:android 如何使用服务器进行版本更新 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727359622a1110473.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论