azhon / appupdate Goto Github PK
View Code? Open in Web Editor NEWAndroid App update library. Android版本更新库,简单、轻量、可随意定制
License: Apache License 2.0
Android App update library. Android版本更新库,简单、轻量、可随意定制
License: Apache License 2.0
作者你好,在使用你的框架时发现所有提示都是中文,若是项目需要支持国际化,体验就不是很好,是否后续能提供文字的设置呢
D/AppUpdate.DownloadService: 应用的通知栏开关状态:已打开
E/AppUpdate.DownloadService: error: java.lang.ArrayIndexOutOfBoundsException: src.length=2048 srcPos=0 dst.length=65536 dstPos=37342 length=-37342
java.lang.ArrayIndexOutOfBoundsException: src.length=2048 srcPos=0 dst.length=65536 dstPos=37342 length=-37342
at java.lang.System.arraycopy(Native Method)
at com.azhon.appupdate.io.BufferedRandomAccessFile.writeAtMost(BufferedRandomAccessFile.java:347)
at com.azhon.appupdate.io.BufferedRandomAccessFile.write(BufferedRandomAccessFile.java:319)
at com.azhon.appupdate.manager.HttpDownloadManager.breakpointDownload(HttpDownloadManager.java:132)
at com.azhon.appupdate.manager.HttpDownloadManager.access$400(HttpDownloadManager.java:36)
at com.azhon.appupdate.manager.HttpDownloadManager$2.run(HttpDownloadManager.java:83)
at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
未在依赖库外调用getInstance()方法
请问如何解决
如果我是强制更新,当下载完,跳转到安装页面,我点取消,返回app,自带的dialog还在界面上,去掉不了
试了几个apk文件,下载速度一直都是在200k/s左右,不是网络问题,宽带是100M的
rt
有多个下载Url,Apk因为部分Url错误或者url被墙导致下载出错,需要切换其他可用Url地址
现在测试重新调用setApkUrl(newUul).download();无响应
你好,我程序已经有
第四步:资源文件res/xml/file_paths_public.xml内容
非强制更新时候会需要获得取消按钮点击事件,处理后续流程逻辑
请问为何
android8.0 已经设置了相关配置了
java.lang.NoSuchMethodError: No direct method <init>(Landroid/content/Context;Ljava/lang/String;)V in class Landroid/support/v4/app/NotificationCompat$Builder; or its super classes (declaration of 'android.support.v4.app.NotificationCompat$Builder'
这是报错信息,定位问题是 return new NotificationCompat.Builder(context, channelId)
我项目使用26编译的,但是这个地方总提示是25的V4包
如何实现通知栏,我的p版本加上不显示
DownloadManager manager = DownloadManager.getInstance(getApplicationContext());
UpdateConfiguration configuration=new UpdateConfiguration();
configuration.setOnDownloadListener(new OnDownloadListener() {
@Override
public void start() {
LogUtil.d("开始下载");
NotificationUtil.showNotification(getApplicationContext(),R.mipmap.launcher,getResources().getString(R.string.app_name),"开始下载");
}
@Override
public void downloading(int max, int progress) {
max =max/1024/1024;//单位转换MB
progress =progress/1024/1024;//单位转换MB
LogUtil.d("下载进度"+progress*100/max);
NotificationUtil.showProgressNotification(getApplicationContext(),R.mipmap.launcher,getResources().getString(R.string.app_name),"正在下载在新版本",max,progress);
}
@Override
public void done(File apk) {
LogUtil.d("下载完成");
NotificationUtil.showDoneNotification(getApplicationContext(),R.mipmap.launcher,getResources().getString(R.string.app_name),"下载完成,点击安装","com.soarswing.braindoctor.braindoctor",apk);
}
@Override
public void error(Exception e) {
LogUtil.d("下载失败");
NotificationUtil.showErrorNotification(getApplicationContext(),R.mipmap.launcher,getResources().getString(R.string.app_name),"下载失败,点击重试");
}
});
manager.setApkName(String.format(
"%s_%s.apk", getResources().getString(R.string.app_name),
info.getVersionName()))
.setApkUrl(info.getUrl())
.setDownloadPath(Environment.getExternalStorageDirectory() + "/AppUpdate")
.setSmallIcon(R.mipmap.launcher)
//可设置,可不设置
.setConfiguration(configuration)
.download();
调用了您发的工具类,在震动模式下还是一直响个不停 我已经设置了 //IMPORTANCE_LOW:默认关闭声音与震动、IMPORTANCE_DEFAULT:开启声音与震动
channel = new NotificationChannel(Constant.DEFAULT_CHANNEL_ID, Constant.DEFAULT_CHANNEL_NAME,
NotificationManager.IMPORTANCE_LOW);关闭声音与振动了,请问这是怎么回事,是我设置的不对吗?
用我们自己的地址下载失败。用您的测试地址就没问题.这个地址应该怎么搞啊?
java.lang.NoSuchMethodError: No direct method <init>(Landroid/content/Context;Ljava/lang/String;)V in class Landroid/support/v4/app/NotificationCompat$Builder; or its super classes (declaration of 'android.support.v4.app.NotificationCompat$Builder' appears in /data/app/m.hongle-eb4iQYSondALfZoq2Pqoxg==/base.apk!classes14.dex)
大佬,这是什么原因造成的
试了N次,每次都是进度条完成之后通知栏就显示下载失败,模拟器上可以,真机不行,我的是小米手机
Originally posted by @AnJeremy in https://github.com/azhon/AppUpdate/issues/25#issuecomment-440569776
我看了可以自定义下载,按照demo试了试,发现下载错误。
这个目前不知道什么原因,其他的很完美。
2019-05-22 14:37:53.491 31851-32114/com.yao W/System.err: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:229)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:538)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:26)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.azhon.appupdate.manager.HttpDownloadManager.getContentLength(HttpDownloadManager.java:228)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.azhon.appupdate.manager.HttpDownloadManager.breakpointDownload(HttpDownloadManager.java:94)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.azhon.appupdate.manager.HttpDownloadManager.access$300(HttpDownloadManager.java:36)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at com.azhon.appupdate.manager.HttpDownloadManager$2.run(HttpDownloadManager.java:82)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2019-05-22 14:37:53.492 31851-32114/com.yao W/System.err: at java.lang.Thread.run(Thread.java:784)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:661)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:539)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:605)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:495)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:339)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:208)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:404)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:375)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:224)
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: ... 20 more
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
2019-05-22 14:37:53.493 31851-32114/com.yao W/System.err: ... 33 more
大家有什么好的建议或需求欢迎提出!
使用过程中有DownloadManager内存泄露
请问一下 你是如何判断系统版本的?code?还是name? 我试过把你的代码code和name改为100 但是还是进行了下载,,,,
android.os.FileUriExposedException: file:///storage/emulated/0/.sh/update/download exposed beyond app through Intent.getData()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed(Uri.java:2356)
at android.content.Intent.prepareToLeaveProcess(Intent.java:10523)
at android.content.Intent.prepareToLeaveProcess(Intent.java:10477)
at android.app.PendingIntent.getActivity(PendingIntent.java:345)
at android.app.PendingIntent.getActivity(PendingIntent.java:307)
at cn.shihuo.modulelib.views.service.UpdateService.e(UpdateService.java:298)
at cn.shihuo.modulelib.views.service.UpdateService.a(UpdateService.java:35)
at cn.shihuo.modulelib.views.service.UpdateService$b.a(UpdateService.java:457)
at cn.shihuo.modulelib.views.service.UpdateService$b.onPostExecute(UpdateService.java:330)
如题,该框架不错,希望能更完善下。
我是一名 ReactNative 开发人员,项目被我用到 rn 里面了。被我封装成Rn 的 android组件了,这里强制要求设置图标,可不可以自动读取主工程的图标。
另外setApkName可不可以自己设置成包名,也不用设置。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.bajiaoxing.intermediaryrenting.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths_public" />
</provider>
mManager.setApkName("appupdate"+TimeUtils.getCurrentTimeInLong()+".apk")
.setApkUrl(data.getFile())
.setAuthorities("com.bajiaoxing.intermediaryrenting.fileprovider")
我加了.fileprovider之后并修改authorities ,每次下载完之后都会提示三四部报错。 去掉又可以正常下载
我直接下载的时候失败,在HttpDownloadManager 的类中的 getContentLength方法中con得到的是null,链接放到浏览器中是可以下载的
执行就跳转到安装界面。卸载删除安装包都没用。不知道为什么
可以写个详细的文档,方便更多人使用,例举使用方法和如何扩展
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.azhon.appupdate.config.UpdateConfiguration.isEnableLog()' on a null object reference
at com.azhon.appupdate.utils.LogUtil.(LogUtil.java:26)
at com.azhon.appupdate.utils.LogUtil.e(LogUtil.java:36)
at com.azhon.appupdate.manager.DownloadManager.checkParams(DownloadManager.java:348)
at com.azhon.appupdate.manager.DownloadManager.download(DownloadManager.java:291)
安装文件未知来源 startInstallPermissionSettingActivity 处理
Originally posted by @wubodanran in https://github.com/azhon/AppUpdate/issues/25#issuecomment-438085728
能否根据apkVersionName判断,是否最新版,或者能直接下载,不需要判断
在我的机器上,你的demo如果先点击了使用版本内置的对话框更新,再点击另外两个按钮,就会出现出现版本库内置的对话框,这个非常的古怪
我现在用的就是最新版本的,android:authorities="com.orange.fun.almost.FileProvider"由于是这边设置的是这样,代码这是这样设置的setAuthorities(getActivity().getPackageName())是不是这里android:authorities="com.orange.fun.almost"改成包名就没问题了
如题,状态栏进度条怎么显示百分比进度,下载完成自动更新状态栏那里怎么让他消失
@OverRide
public void downloading(int max, int progress) {
LogUtil.i(TAG, "max: " + max + " --- progress: " + progress);
if (showNotification) {
//优化通知栏更新,减少通知栏更新次数
int curr = (int) (progress / (double) max * 100.0);
if (curr != lastProgress) {
lastProgress = curr;
String downloading = getResources().getString(R.string.start_downloading);
NotificationUtil.showProgressNotification(this, smallIcon, downloading, "", max, progress);
}
}
if (listener != null) {
listener.downloading(max, progress);
}
}
int curr = (int) (progress / (double) max * 100.0);
if (curr != lastProgress)
这个地方的百分比转换是不是有点小问题
设置.setBreakpointDownload(false)
使用华为mate20 Android9.0测试,07-31 17:19:18.847 20724-21548/com.azhon.app W/System.err: java.net.SocketTimeoutException: timeout (试过好几款华为手机都是这样,比如honor 8 Android 8.0)
又试过努比亚,三星,小米,oppo等其他手机 没有该问题,另,修改超时时间为30s+也没用,一样会超时。
全部错误日志如下:
07-31 17:19:18.847 20724-21548/com.azhon.app W/System.err: java.net.SocketTimeoutException: timeout
07-31 17:19:18.848 20724-21548/com.azhon.app W/System.err: at com.android.okhttp.okio.Okio$3.newTimeoutException(Okio.java:212)
at com.android.okhttp.okio.AsyncTimeout.exit(AsyncTimeout.java:261)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:215)
07-31 17:19:18.849 20724-21548/com.azhon.app W/System.err: at com.android.okhttp.okio.RealBufferedSource.read(RealBufferedSource.java:50)
at com.android.okhttp.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:393)
at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:371)
at java.io.InputStream.read(InputStream.java:101)
at com.azhon.appupdate.manager.HttpDownloadManager.fullDownload(HttpDownloadManager.java:187)
07-31 17:19:18.850 20724-21548/com.azhon.app W/System.err: at com.azhon.appupdate.manager.HttpDownloadManager.access$500(HttpDownloadManager.java:36)
at com.azhon.appupdate.manager.HttpDownloadManager$2.run(HttpDownloadManager.java:85)
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)
07-31 17:19:18.851 20724-21548/com.azhon.app W/System.err: Caused by: java.net.SocketException: Socket closed
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:144)
at com.android.okhttp.okio.Okio$2.read(Okio.java:136)
at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:211)
... 10 more
大家在使用中遇到了什么问题欢迎留言
如果能在使用文档中添加混淆的配置就更赞了
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.