发布android内测版本,并进行在线更新

使用第三方平台托管apk


我在项目智能门禁开发中使用蒲公英托管apk,方便快捷,创建自己的应用,上传apk发布即可完成。

创建应用后,每个应用有唯一的api_key,app_key,在调用蒲公英API的时候,一定要使用到这两个参数。比如智能门禁应用的app_key,api_key如下:

1
2
3
<app_key>f129*************************71af</app_key>
<api_key>160e**********************491</api_key>

我在项目中主要用到两个api,

Num API Method Param
1 https://www.pgyer.com/apiv2/app/install GET _api_key/app_key
2 https://www.pgyer.com/apiv2/app/check POST _api_key/app_key

第一个API用来下载最新版本的apk。
第二个API用来获取apk最新的版本信息,请求此API返回数据如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"code": 0,
"message": "",
"data": {
"buildBuildVersion": "14",
"downloadURL": "https://www.pgyer.com/app/installUpdate/15556274e739c7c95961eb876ac8ed6c?sig=PYk7Mx4oeX3R2D4UxhPJApAQxK38WL89jX1azMriRNrDuijlFtS7sWZvVgWRUgrP",
"haveNewVersion": false,
"buildVersionNo": "315",
"buildVersion": "72c7316",
"buildShortcutUrl": "https://www.pgyer.com/shanju_smartdoor",
"buildUpdateDescription": "1. 优化主题配色,提升用户体验",
"buildHaveNewVersion": true
}
}

我通过比较版本号检查是否有更新,获取app当前的版本号versionCode(float)与返回字段buildVersionNo(int)比较,若buildVersionNo<buildVersionNo,说明有版本更新。获取versionCode的代码如下:

1
2
3
4
5
6
7
8
9
10
11
public static float getVersionCode() {
float versionCode = 0;
try {
Context context = DeviceApplication.getContext();
versionCode = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return versionCode;
}

若有更新则进行下载安装,下载链接包含在返回信息中,即为downloadURL。也可使用第二个API直接下载最新版本的apk。

okHTTP实现下载


发布android内测版本,并进行在线更新
https://blackist.org/2018-04-30-android-publish-beta-apk/
作者
董猿外
发布于
2018年4月30日
许可协议