前言
平时写点Android 程序都是为了兴趣写的,但是之前给别人写的一个App有Bug,把Bug修复后只能通过QQ或微信发他,现在觉得这种方法实属不可取,要是我写的App 很多人用的话,通过QQ发给他们将是一件非常繁琐的事情。最近准备给公司写个蓝牙App,客户比较大,用的人也自然多。。。
基于以上痛点,于是想着在App里集成自动更新的方法。开干!
提示:以下内容仅供参考,如有不当之处欢迎批评指正。
一、蒲公英自动检测更新机制
以下是官方文档中摘要的
新版本更新机制(Android 2.8.3以后,iOS 2.8.9以后) 新版本蒲公英 SDK 的更新,是根据 本地 App 的
Version和App 本身的 Build来判定更新的。这两个版本号中,任何一个检查到线上版本大于本地版本,都会提示更新。第一步: 如果本地 App 的 Version小于蒲公英上的 Version,则提示更新。(注意:iOS App 的本地版本号是指
CFBundleShortVersionString, Android 是指 VersionName)第二步: 如果本地 App 的 Build小于蒲公英上的 Build,则提示更新。(注意:iOS App 的本地版本号是指
CFBundleVersion,Android 是指 VersionCode)在这两步中,任何一步如果判断出有新版本,都会提示更新。否则不会提示
。
二、使用步骤
1.添加依赖及仓库地址
第一步:添加仓库地址
maven { url "https://raw.githubusercontent.com/Pgyer/mvn_repo_pgyer/master" }
第二步:添加依赖
implementation 'com.pgyersdk:sdk:3.0.10'
第三步:添加所需权限
<!-- 必选-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取网络状态 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络通信-->
<!-- 用户手机设置中允许未知来源安装包安装状态为关;-->
<!-- Android8.0 以后,如果要安装 apk 需要额外添加权限:-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 读写sdcard,storage等等 -->
如图:
2.APP KEY 获取
第一步:在蒲公英平台上传Android APK 第一个版本,以便于获取APP KEY
提示:该APK需签名打包。
如图:
第二步:上传完成后填写应用信息
如图:
第三步:发布应用
第四步:发布成功后即可查看APP KEY
如图:
3.使用方法
第一步:在myAplication中添加以下方法,其中 Pgyer.setAppId方法中添加的是APP KEY
package com.Young.demo;
import android.app.Application;
import android.content.Context;
import com.pgyersdk.Pgyer;
import com.pgyersdk.PgyerActivityManager;
import com.pgyersdk.crash.PgyCrashManager;
import com.pgyersdk.crash.PgyerCrashObservable;
import com.pgyersdk.crash.PgyerObserver;
public class myAplication extends Application {
@Override
public void onCreate() {
super.onCreate();
PgyCrashManager.register();
PgyerCrashObservable.get().attach(new PgyerObserver() {
@Override
public void receivedCrash(Thread thread, Throwable throwable) {
}
});
PgyerActivityManager.set(this);
}
@Override
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
Pgyer.setAppId("XXXXXXXX");
}
}
如图:
第二步:在MainActivity中添加以下方法
/** 新版本 **/
new PgyUpdateManager.Builder()
.setForced(false) //设置是否强制更新
.setUserCanRetry(false) //失败后是否提示重新下载
.setDeleteHistroyApk(true) // 检查更新前是否删除本地历史 Apk
.register();
如图:
第三步:将刚才上传到蒲公英的APP APK 安装到手机上,一个简单Hello World
如图:
第四步:提高版本,改点东西,再签名打包
提示:签名证书和刚才那个一样。
如图:
如图:
第五步:在蒲公英平台更新应用上传新版APK,填写应用信息后发布
如图:
第六步:重新打开手机上的APP就可以检测更新了
如图:APP 重启后自动检测更新
如图:安装新版本
如图:安装成功
如图:更新成功!完美
总结
已上就是通过蒲公英实现APP 自动检测更新的方法。
好久都没写博客了,突然感觉有点生疏了,第一次用Markdown 写博客感觉是挺不错的。
争取后面有时间多写写学习总结。
觉得不错的话,点个赞吧【手动狗头】
源码:https://gitee.com/wind5280/android-demo.git