Giter Site home page Giter Site logo

jenly1314 / appupdater Goto Github PK

View Code? Open in Web Editor NEW
835.0 18.0 117.0 50.33 MB

🚀 AppUpdater一个专注于App更新,一键傻瓜式集成App版本升级的轻量开源库。(集成步骤超简单)

License: MIT License

Java 100.00%
appupdater appupdate update app-updater app-dialog version dialog dialogfragment download version-update

appupdater's Issues

设置MD5报错?

我测试了下 .setApkMD5("595edf9db4e839bf0ac7c192e693ecac"),然后运行报错了,我看了下日志是
java.util.IllegalFormatConversionException: d != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4403)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2885)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2839)
at java.util.Formatter.format(Formatter.java:2524)
at java.util.Formatter.format(Formatter.java:2459)
at java.lang.String.format(String.java:2870)
at com.king.app.updater.service.DownloadService.startDownload(DownloadService.java:134)

我看了下好像是这个引起的吧
Log.d(Constants.TAG,String.format("UpdateConfig.apkMD5:%d",apkMD5));
%d的问题?

是否支持8.0

在方法里面 com.king.app.updater.AppUpdater#startDownloadService
我看else的逻辑会走启动服务的方法,mContext.startService(intent); 会不适配8.0
应该根据系统版本来启动startService 或 startForegroundService

更新报错

Fatal Exception: java.lang.RuntimeException: Unable to start service com.king.app.updater.service.DownloadService@c59091c with Intent { cmp=com.wwyy.wzhxl/com.king.app.updater.service.DownloadService }: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.king.app.updater.UpdateConfig.l()' on a null object reference
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4107)
at android.app.ActivityThread.access$1800(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7403)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

框架内部的MD5值计算有问题

如果文件的MD5值的首位是0,框架内部计算出MD5值之后会自动去掉0,导致MD5值只有31位数了,一直无法匹配我设置进去的MD5值。
框架内打印的数据 D/AppUpdater: FileMD5:bc4af78bfaec50b820997444a3ce205

真正的MD5:0bc4af78bfaec50b820997444a3ce205

java.net.ConnectException: responseCode = 302

java.net.ConnectException: responseCode = 302
at com.king.app.updater.http.HttpManager$DownloadTask.doInBackground(HttpManager.java:114)
at com.king.app.updater.http.HttpManager$DownloadTask.doInBackground(HttpManager.java:54)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)

有时候会出现file_provider的问题导致报错

Failed to find configured root that contains /storage/emulated/0/Android/data/XXX/files/apk/XXX.apk

at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:13)
at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:2)
at com.king.app.updater.util.AppUtils.getInstallIntent(AppUtils.java:6)
at com.king.app.updater.util.NotificationUtils.showFinishNotification(NotificationUtils.java:4)
at com.king.app.updater.service.DownloadService$AppDownloadCallback.onFinish(DownloadService.java:3)
at com.king.app.updater.http.HttpManager$DownloadTask.onPostExecute(HttpManager.java:4)
at com.king.app.updater.http.HttpManager$DownloadTask.onPostExecute(HttpManager.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:797)
at android.os.AsyncTask.access$900(AsyncTask.java:195)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:814)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

提出以下3条内容

  1. 既然是提倡贯彻傻瓜理念,
    android.permission.INTERNET 权限你还未添加进插件的xml。
    希望可以直接加入。

  2. 在下载中通知栏Flags添加 Notification.FLAG_NO_CLEAR 。因为这个通知应该不用被清除

  3. 可以在通知栏点击 或通知栏自定取消按钮。即取消下载
    我觉得用户应该需要这样的功能。尤其是app比较大。
    我本来是想提供一条 Pull Request,不过这需要改好几个地方,还是希望你可以加入取消的功能。

权限导致下载失败

问题:读写权限未获取的情况下进行下载
状况:appupdater中有检测权限,但是通过后再下载apk的时候提示下载失败,点击通知栏重新下载后没有反应。

静默安装

如果设备已经root ,可以支持静默安装吗?

Unable to build a new hidden directory

android 8.0
Unable to build a new hidden directory
java.io.FileNotFoundException: /storage/emulated/0/.AppUpdater/AppUpdater.apk (No such file or directory)

功能建议

是否考虑添加弹窗背景自定义图片,这个功能很常见呢。

关于service内弹出dialog的建议

有的时候需要在service里面弹出dialog升级,那么这个时候你这个dialog的工具栏就不行了,建议在
AppDialog类里面提供方法返回Dialog 对象,这样可以通过
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//8.0新特性
AppDialog.INSTANCE.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY - 1);
} else {
AppDialog.INSTANCE.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
}
这两个方法,在service里面弹出dialog

English Doc

Please make English documentation, as an idea :)
It looks quiet awsome. 👍

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.