diff --git a/README.md b/README.md index 1398d7e..ca2492e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ ![Image](app/src/main/ic_launcher-web.png) -[![Download](https://img.shields.io/badge/download-App-blue.svg)](https://raw.githubusercontent.com/jenly1314/AppUpdater/master/app/release/app-release.apk) +[![Download](https://img.shields.io/badge/download-App-blue.svg)](https://raw.githubusercontent.com/jenly1314/AppUpdater/master/app/release/app-release.apk)、 +[![MavenCentral](https://img.shields.io/maven-central/v/com.github.jenly1314.AppUpdater/app-updater)](https://repo1.maven.org/maven2/com/github/jenly1314/AppUpdater) [![JCenter](https://img.shields.io/badge/JCenter-1.0.10-46C018.svg)](https://bintray.com/beta/#/jenly/maven/app-updater) [![JitPack](https://jitpack.io/v/jenly1314/AppUpdater.svg)](https://jitpack.io/#jenly1314/AppUpdater) [![CI](https://travis-ci.org/jenly1314/AppUpdater.svg?branch=master)](https://travis-ci.org/jenly1314/AppUpdater) @@ -36,25 +37,36 @@ AppUpdater for Android 是一个专注于App更新,一键傻瓜式集成App版 ## 引入 -### Maven: -```maven - //app-updater - - com.king.app - app-updater - 1.0.10 - pom - +由于2021年2月3日 **JFrog宣布将关闭Bintray和JCenter,计划在2022年2月完全关闭。所以后续版本不再发布至 JCenter + +### Gradle: + +1. 在Project的 **build.gradle** 里面添加远程仓库 + +```gradle +allprojects { + repositories { + //... + mavenCentral() + } +} +``` +2. 在Module的 **build.gradle** 里面添加引入依赖项 + +```gradle + + //----------AndroidX 版本 + //app-updater + implementation 'com.github.jenly1314.AppUpdater:app-updater:1.1.0' //app-dialog - - com.king.app - app-dialog - 1.0.10 - pom - + implementation 'com.github.jenly1314.AppUpdater:app-dialog:1.1.0' + ``` -### Gradle: + + +以前发布至JCenter的版本 + ```gradle //----------AndroidX 版本 @@ -69,28 +81,6 @@ AppUpdater for Android 是一个专注于App更新,一键傻瓜式集成App版 //app-dialog implementation 'com.king.app:app-dialog:1.0.10' ``` -### Lvy: -```lvy - //app-updater - - - - - //app-dialog - - - -``` - -###### 如果Gradle出现compile失败的情况,可以在Project的build.gradle里面添加如下:(也可以使用上面的GitPack来complie) -```gradle - allprojects { - repositories { - //... - maven { url 'https://dl.bintray.com/jenly/maven' } - } - } -``` ## 示例 @@ -138,7 +128,7 @@ AppUpdater for Android 是一个专注于App更新,一键傻瓜式集成App版 ``` -更多使用详情,请查看[app](app)中的源码使用示例或直接查看[API帮助文档](https://jenly1314.github.io/projects/AppUpdater/doc/) +更多使用详情,请查看[app](app)中的源码使用示例或直接查看[API帮助文档](https://javadoc.jitpack.io/com/github/jenly1314/AppUpdater/1.1.0/javadoc/index.html) ## 混淆 @@ -148,6 +138,10 @@ AppUpdater for Android 是一个专注于App更新,一键傻瓜式集成App版 ## 版本记录 +#### v1.1.0:2021-7-2 (从v1.1.0开始不再发布至JCenter) +* 后续版本只支持androidx,版本名称不再带有androidx标识 +* 优化细节 + #### v1.0.10:2021-3-4 * AppDialogConfig添加构造参数,简化自定义扩展用法 * 优化细节 diff --git a/app-updater/src/main/java/com/king/app/updater/service/DownloadService.java b/app-updater/src/main/java/com/king/app/updater/service/DownloadService.java index d843977..e132fcb 100644 --- a/app-updater/src/main/java/com/king/app/updater/service/DownloadService.java +++ b/app-updater/src/main/java/com/king/app/updater/service/DownloadService.java @@ -73,7 +73,7 @@ public class DownloadService extends Service { UpdateConfig config = intent.getParcelableExtra(Constants.KEY_UPDATE_CONFIG); startDownload(config,null,null); }else{ - Log.w(Constants.TAG,"Please do not repeat the download."); + Log.w(Constants.TAG,"Please do not duplicate downloads."); } } @@ -96,12 +96,12 @@ public class DownloadService extends Service { return; } - if(callback!=null){ + if(callback != null){ callback.onDownloading(isDownloading); } if(isDownloading){ - Log.w(Constants.TAG,"Please do not repeat the download."); + Log.w(Constants.TAG,"Please do not duplicate downloads."); return; } @@ -131,9 +131,11 @@ public class DownloadService extends Service { //是否存在相同的apk boolean isExistApk = false; if(!TextUtils.isEmpty(apkMD5)){//如果存在MD5,则优先校验MD5 + Log.d(Constants.TAG,String.format("UpdateConfig.apkMD5:%d",apkMD5)); isExistApk = AppUtils.checkFileMD5(mFile,apkMD5); - }else if(versionCode!=null){//如果存在versionCode,则校验versionCode + }else if(versionCode != null){//如果存在versionCode,则校验versionCode try{ + Log.d(Constants.TAG,String.format("UpdateConfig.versionCode:%d",versionCode)); isExistApk = AppUtils.apkExists(getContext(),versionCode,mFile); }catch (Exception e){ Log.w(Constants.TAG,e); @@ -303,7 +305,7 @@ public class DownloadService extends Service { } } - if(callback!=null){ + if(callback != null){ callback.onProgress(progress,total,isChange); } } diff --git a/app-updater/src/main/java/com/king/app/updater/util/AppUtils.java b/app-updater/src/main/java/com/king/app/updater/util/AppUtils.java index 9068454..f61c746 100644 --- a/app-updater/src/main/java/com/king/app/updater/util/AppUtils.java +++ b/app-updater/src/main/java/com/king/app/updater/util/AppUtils.java @@ -154,10 +154,13 @@ public final class AppUtils { if(file!=null && file.exists()){ String packageName = context.getPackageName(); PackageInfo packageInfo = AppUtils.getPackageInfo(context,file.getAbsolutePath()); - if(packageInfo!=null && versionCode == packageInfo.versionCode){//比对versionCode - ApplicationInfo applicationInfo = packageInfo.applicationInfo; - if(applicationInfo!=null && packageName.equals(applicationInfo.packageName)){//比对packageName - return true; + if(packageInfo != null){//比对versionCode + Log.d(Constants.TAG,String.format("ApkVersionCode:%d",packageInfo.versionCode)); + if(versionCode == packageInfo.versionCode){ + ApplicationInfo applicationInfo = packageInfo.applicationInfo; + if(applicationInfo != null && packageName.equals(applicationInfo.packageName)){//比对packageName + return true; + } } } } diff --git a/app/release/app-release.apk b/app/release/app-release.apk index c7a455f..2ce9bed 100644 Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index f0e2a27..5c5bea5 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -10,8 +10,8 @@ { "type": "SINGLE", "filters": [], - "versionCode": 18, - "versionName": "1.0.10-androidx", + "versionCode": 19, + "versionName": "1.1.0", "outputFile": "app-release.apk" } ] diff --git a/app/src/main/java/com/king/appupdater/MainActivity.java b/app/src/main/java/com/king/appupdater/MainActivity.java index a43f03f..76f261a 100644 --- a/app/src/main/java/com/king/appupdater/MainActivity.java +++ b/app/src/main/java/com/king/appupdater/MainActivity.java @@ -3,6 +3,7 @@ package com.king.appupdater; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -30,6 +31,8 @@ import androidx.appcompat.app.AppCompatActivity; */ public class MainActivity extends AppCompatActivity { + private static String TAG = MainActivity.class.getSimpleName(); + private final Object mLock = new Object(); //下载出现Failed to connect to raw.githubusercontent.com时,可以换个下载链接测试,github的raw.githubusercontent.com目前不太稳定。 @@ -92,6 +95,8 @@ public class MainActivity extends AppCompatActivity { public void onDownloading(boolean isDownloading) { if(isDownloading){ showToast("已经在下载中,请勿重复下载。"); + }else{ + showToast("开始下载…"); } } @@ -103,10 +108,11 @@ public class MainActivity extends AppCompatActivity { @Override public void onProgress(long progress, long total, boolean isChange) { + int currProgress = (int)(progress * 1.0f / total * 100.0f); if(isChange){ - int currProgress = Math.round(progress * 1.0f / total * 100.0f); progressBar.setProgress(currProgress); } + Log.d(TAG,String.format("onProgress:%d/%d | %d%%",progress,total,currProgress)); } @Override @@ -143,7 +149,7 @@ public class MainActivity extends AppCompatActivity { .setUpdateCallback(new AppUpdateCallback() { @Override public void onProgress(long progress, long total, boolean isChange) { - + Log.d(TAG,String.format("onProgress:%d/%d",progress,total)); } @Override @@ -222,8 +228,6 @@ public class MainActivity extends AppCompatActivity { public void onClick(View v) { mAppUpdater = new AppUpdater.Builder() .setUrl(mUrl) -// .setPath(Environment.getExternalStorageDirectory() + "/.AppUpdater")//如果适配Android Q,则Environment.getExternalStorageDirectory()将废弃 -// .setPath(getExternalFilesDir(Constants.DEFAULT_DIR).getAbsolutePath())//自定义路径,推荐使用默认 // .setApkMD5("3df5b1c1d2bbd01b4a7ddb3f2722ccca")//支持MD5校验,如果缓存APK的MD5与此MD5相同,则直接取本地缓存安装,推荐使用MD5校验的方式 .setVersionCode(BuildConfig.VERSION_CODE)//支持versionCode校验,设置versionCode之后,新版本versionCode相同的apk只下载一次,优先取本地缓存,推荐使用MD5校验的方式 .setFilename("AppUpdater.apk") diff --git a/build.gradle b/build.gradle index 7b5e02f..368d87c 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:4.1.1' - classpath 'com.novoda:bintray-release:0.9' +// classpath 'com.novoda:bintray-release:0.9' classpath 'com.vanniktech:gradle-maven-publish-plugin:0.13.0' // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle.properties b/gradle.properties index acec75b..bdeebbd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,8 @@ android.enableJetifier=true -VERSION_NAME=1.0.10-androidx -VERSION_CODE=18 +VERSION_NAME=1.1.0 +VERSION_CODE=19 GROUP=com.github.jenly1314.AppUpdater POM_DESCRIPTION=AppUpdater for Android @@ -34,4 +34,5 @@ POM_DEVELOPER_ID=jenly POM_DEVELOPER_NAME=Jenly Yu RELEASE_REPOSITORY_URL=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ SNAPSHOT_REPOSITORY_URL=https://s01.oss.sonatype.org/content/repositories/snapshots/ -RELEASE_SIGNING_ENABLED=true +RELEASE_SIGNING_ENABLED=false + diff --git a/versions.gradle b/versions.gradle index 78ab86f..a14e0e4 100644 --- a/versions.gradle +++ b/versions.gradle @@ -1,7 +1,7 @@ //App def app_version = [:] -app_version.versionCode = 18 //androidx 18 -app_version.versionName = "1.0.10-androidx" +app_version.versionCode = 19 +app_version.versionName = "1.1.0" ext.app_version = app_version //build version