小编Roy*_*erg的帖子

升级Android应用程序时会报告ClassNotFoundException错误

我已经看过很多关于ClassNotFoundException和Android的帖子,但是我还没有找到我认为是我体验的原因.

我在Android电子市场上有一个应用程序 - 数据计数器小部件.它有250k +的下载量,每次我发布新版本时,我都会在Android Market的开发者控制台上收到一些关于ClassNotFoundException的错误报告(1-5).

29份报告来自未指定("OTHER")设备,而其中两份来自Nexus One.有两条用户消息:"启动时崩溃"和"更新安装期间".

所有报告都是关于我的接收器(扩展BroadcastReceiver).其中一个接收器相对经常被触发,因为它是启动读取和存储Android设备的数据使用的服务的接收器.我有这种感觉,它可能是为接收器设置了一个警报(使用AlarmManager),然后用户/设备升级了应用程序并且找不到类 - 要么是因为它在物理上不同的包中,要么发生了设备进行交换的那一刻.可能是这种情况吗?如果是这样,有什么方法吗?我不能不明白为什么几乎所有的报告(比方说90%)都会在新发布后的相同或接下来的几天发布.

我的一个接收器的堆栈跟踪(其他接收器提供除类名称之外的相同堆栈跟踪):

java.lang.RuntimeException: Unable to instantiate receiver com.roysolberg.android.datacounter.receivers.CounterReceiver: java.lang.ClassNotFoundException: com.roysolberg.android.datacounter.receivers.CounterReceiver in loader dalvik.system.PathClassLoader[/data/app/com.roysolberg.android.datacounter-1.apk]
 at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789)
 at android.app.ActivityThread.access$3200(ActivityThread.java:125)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:123)
 at android.app.ActivityThread.main(ActivityThread.java:4627)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:521)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.roysolberg.android.datacounter.receivers.CounterReceiver in loader dalvik.system.PathClassLoader[/data/app/com.roysolberg.android.datacounter-1.apk]
 at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
 at android.app.ActivityThread.handleReceiver(ActivityThread.java:2780)
 ... 10 more
Run Code Online (Sandbox Code Playgroud)

java android classnotfoundexception

8
推荐指数
1
解决办法
2267
查看次数

如何检查用户是否已禁用通知声音?

在Android 7中,您可以长按通知并选择显示来自所属应用程序的通知,而不显示声音.

对于Android 7,我们必须NotificationManager.areNotificationsEnabled()检查用户是否已阻止您的应用的通知.如何检查用户是否刚刚禁用了应用程序通知的声音?

更新: 问题仍然代表Android 8/O. 我们有一些用户抱怨没有听到任何声音,然后他们在不知情的情况下禁用它,没有我们有机会检查它.

android android-notifications

8
推荐指数
1
解决办法
120
查看次数

如何确保RemoteViewsService在Oreo的后台运行?

Android 8具有后台执行限制,因此当我们开始定位Oreo时,我们将服务更改为使用JobIntentSerivce以便能够完成工作.

但是,我们有一个小部件,每隔几分钟就会使用实时分数数据进行更新.小部件的服务扩展了旧的RemoteViewsService.即使应用程序在后台,我们如何确保窗口小部件更新?

我已经看过另一个SO问题中的建议,但它们似乎都有一些警告:

  • JobScheduler需要一个JobIntentSerivce我无法看到如何与之结合的RemoteViewsService(或者它可以以某种方式?)
  • PendingIntent.getForegroundService() 在一个糟糕的互联网连接(或者可能是一个慢速设备)上并不完美,并且有时会给出一个ANR,当我们看到时间限制正在接近我们时,理想情况下我们并不真的想要显示通知

我还没有尝试过BroadcastReceiver.goAsync(),但也许那是我最好的一击?

android android-widget android-service android-8.0-oreo

8
推荐指数
0
解决办法
671
查看次数

加急 WorkRequest 需要 ListenableWorker 提供 getForegroundInfoAsync() 的实现

在这里做一些Jeopardy 风格的问答

我有一些工作有时需要按照2.7.0 版本中所述的方式快速运行:WorkManager

val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED).build()
val oneTimeWorkRequest = OneTimeWorkRequest.Builder(MyWorker::class.java)
    .setInitialDelay(2, TimeUnit.SECONDS)
    .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
    .setConstraints(constraints).build()
WorkManager.getInstance(context).enqueueUniqueWork("my-identifier", ExistingWorkPolicy.REPLACE, oneTimeWorkRequest)
Run Code Online (Sandbox Code Playgroud)

我相信代码在 Android 12/S 上运行得很好,但是当作业在 Android 11 上运行时,我收到以下错误:

E/WM-WorkerWrapper: Work [ id=<UUID>, tags={ [WorkerTag] } ] failed because it threw an exception/error
     java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Expedited WorkRequests require a ListenableWorker to provide an implementation for `getForegroundInfoAsync()`
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        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:923)
Run Code Online (Sandbox Code Playgroud)

我需要做什么?

android android-jetpack android-workmanager

8
推荐指数
1
解决办法
4104
查看次数

Android Studio 2.0 - NoSuchAlgorithmException:SHA256WITHDSA签名不可用

我运行的Android 2.0工作室预览3B并试图用"生成签名APK ......"生成菜单.

我收到以下错误消息窗格:

:wear:packageRelease FAILED
FAILURE: Build failed with an exception.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':wear:packageRelease'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
...
Error:org.gradle.tooling.BuildException: SHA256WITHDSA Signature not available: try using a newer JVM to build your application.
    at com.android.build.gradle.tasks.PackageApplication.doFullTaskAction(PackageApplication.java:224)
    at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:82)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 70 more
Error:java.security.NoSuchAlgorithmException: SHA256WITHDSA Signature not available
    at org.bouncycastle.jcajce.DefaultJcaJceHelper.createSignature(Unknown Source)
    at org.bouncycastle.operator.jcajce.OperatorHelper.createSignature(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

Android Studio使用的是JRE 1.7.0_55-b13 x86_64.

我看到尝试使用较新的JVM来构建您的应用程序.建议.它有助于升级Java吗?或者我该如何解决这个问题?

我还没有看到任何地方(例如 …

java android android-gradle-plugin android-studio-2.0

7
推荐指数
1
解决办法
1159
查看次数

事件未送达听众

我有一个libgdx游戏使用scene2d的UI.我有几个ImageButton自己的实例ClickListener.在某些设备上(目前仅在三星Galaxy S3和三星Galaxy S4 Active上看到它),除非快速点击两次,否则事件无法发送.

每次单击失败时都会记录以下内容:

04-22 16:10:09.678: D/InputReader(728): Input event: value=1 when=20897610551000
04-22 16:10:09.678: I/InputReader(728): Touch event's action is 0x0 (deviceType=0) [pCnt=1, s=0.889 ] when=20897610612000
04-22 16:10:09.678: I/InputDispatcher(728): Delivering touch to: action: 0x0
04-22 16:10:09.678: I/InputDispatcher(728): Delivering touch to: action: 0x3
04-22 16:10:09.688: W/InputEventReceiver(728): Attempted to finish an input event but the input event receiver has already been disposed.
04-22 16:10:09.688: W/InputEventReceiver(728): Attempted to finish an input event but the input event …
Run Code Online (Sandbox Code Playgroud)

android libgdx

6
推荐指数
1
解决办法
1万
查看次数

在WebView中手动验证SSL证书

我有一个Android WebView,其中显示了一些https内容.服务器提供的SSL证书存在问题.当我在等待WebView信任的新证书时,我想知道如何手动验证SSL证书.

WebViewClient在我onReceivedSslError收到SslError的主要错误代码的地方SslError.SSL_UNTRUSTED.在同一错误对象上我收到证书,一个实例SslCertificate.

有没有办法让我对该证书对象进行任何手动验证,以验证它是否值得信赖?

我对接受所有证书都不感兴趣,即使这是暂时的.

android ssl-certificate android-webview

6
推荐指数
0
解决办法
613
查看次数

Xamarin Studio 5.9.7(build 9)和Xamarin.iOS 9.0.1.18中的Codesign错误

我已将Xamarin Studio升级到测试频道的最新版本.当我尝试运行该应用程序时,我收到以下错误:

Signing application
codesign -v --force --sign "[hex]" --entitlements "/Users/[username]/devel/git/[app]/bin/iPhone/Debug/[app].xcent" "/Users/[username]/devel/git/[app]/bin/iPhone/Debug/[app].app"
/Users/[username]/devel/git/[app]/bin/iPhone/Debug/[app].app: invalid resource specification rule(s)
codesign exited with code 1
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我怎么能绕过它呢?

  • Xamarin Studio 5.9.7(build 9)
  • Xamarin.iOS 9.0.1.18(商业版)
  • Xcode 7.0(8227)Build 7A220

我得到的最接近的线索是https://forums.xamarin.com/discussion/28480/upload-to-appstore-failed-contains-an-invalid-key-cfbundleresourcespecification-in-bundle,但我找不到该选项在Xamarin Studio中提到过.

xamarin.ios ios xamarin xamarin-studio

6
推荐指数
1
解决办法
2183
查看次数

Android Studio中HPROF Viewer中图标的含义

我不时会在Android Studio中使用Memory Monitor和HPROF Viewer来检查是否存在任何内存泄漏和内存使用情况.

我相信我知道查看器中使用的大多数符号和颜色的含义,但我想确定并且不仅仅是对它们有自己的理解.我没有在网上找到任何解释,但我确信我的问题的答案非常简单.

参考文献3中的下列符号是什么意思?

1: 符号#1

2: 符号#2

3: 符号#3

4: 符号#4

5:符号#5

当实例的字体颜色为蓝色,红色,粗体或斜体时,这意味着什么?

有时符号1,2和3可以在同一实例中组合.这是否意味着特别的东西?

6: 符号梳

7: 符号梳

当悬停不同的图标时,我对HPROF Viewer的功能请求是一个工具提示.

android hprof heap-dump android-memory android-studio

6
推荐指数
1
解决办法
539
查看次数

在libgdx中绘制和存储用户的触摸路径

我正在努力寻找与libgdx直截了当的东西.

简而言之,这是一个"手指画"应用程序,我想绘制一个用户触摸屏幕的特定宽度的路径.

我之前使用普通的Android做过这个android.view.View.我有一个android.graphics.Path存储用户当前触摸坐标的地方.在onDraw()视图的方法中,我画了路径android.graphics.Canvas.每当用户松开手指时,我都会绘制到离线画布的路径/ android.graphics.Bitmap也是在onDraw()方法中绘制的.干净利落.

如何使用libgdx完成?

我尝试过使用一个com.badlogic.gdx.graphics.Pixmap可以在用户移动手指时绘制线条的线条.这很好用,除了我无法控制线路的使用情况Gdx.gl.glLineWidth().我知道我可以绘制一个矩形而不是一条线来设置宽度,但是Pixmap似乎没有任何旋转方式,所以我不知道如何做到这一点.

我可以使用a com.badlogic.gdx.graphics.glutils.ShapeRenderer绘制线条(或矩形)com.badlogic.gdx.Screen.render().据我所知,然后我需要存储当前触摸的每个触摸点,然后在渲染上绘制所有线条.每当用户重新关闭手指时,我想我可以按原样存储屏幕com.badlogic.gdx.utils.ScreenUtils.getFrameBufferPixmap().希望有一种更简单的方法来实现我想要的.

android libgdx

5
推荐指数
1
解决办法
1004
查看次数

意识快照API的天气在不同地点和天气变化中持续数天

当我开始考虑使用相对较新的Snapshot API 获取天气时,当我无法找到返回结果的任何时间戳时,我有点困惑/担心.

我实现了API的使用,一切似乎都好了.但是,现在我已经Weather在三个截然不同的地方获得了相同的数据.现实生活中的条件和温度确实不一样(另一个设备提供了不同的(正确的)数据).

如果您信任API为您提供没有时间戳或位置的快照数据,或者您真正需要能够信任所返回数据的任何内容.

这是Snapshot API的已知问题吗?有没有办法避免这种情况发生?当天气像这样被卡住时你怎么能恢复?有没有办法知道返回的数据的年龄和/或位置?

我调试了有问题的设备,看到它不是缓存数据的应用程序,并且WeatherResult状态为成功.

android google-awareness

5
推荐指数
1
解决办法
245
查看次数

在 Android 上进行 One Tap 登录和注册时出现“16:找不到匹配的凭据”

我一直在遵循在 Android 上设置 One Tap 登录和注册的指南,并使用示例代码来设置 One Tap 客户端,但每次我打电话时,oneTapClient.beginSignIn(signInRequest)我都会收到一个回调到OnFailureListener's onFailure()

com.google.android.gms.common.api.ApiException: 16: Cannot find a matching credential.
    at com.google.android.gms.common.api.internal.TaskUtil.setResultOrApiException(com.google.android.gms:play-services-base@@17.2.1:6)
    at com.google.android.gms.internal.auth-api.zzaj.zzc(com.google.android.gms:play-services-auth@@18.0.0:2)
    at com.google.android.gms.internal.auth-api.zzaa.dispatchTransaction(com.google.android.gms:play-services-auth@@18.0.0:6)
    at com.google.android.gms.internal.auth-api.zzc.onTransact(com.google.android.gms:play-services-auth@@18.0.0:13)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)
Run Code Online (Sandbox Code Playgroud)

这是什么意思?为什么我得到这个?我确定我一定在设置中的某个地方遗漏了一些东西。

android

5
推荐指数
1
解决办法
1582
查看次数

链接参考失败-在appcompat中找不到样式属性'@android:attr / textColor'

我正在尝试摆脱android.enableAapt2=false我们项目中即将被删除的选项。一直很痛苦,但我希望我能到达那里。

现在我被困住了BuildException: Failed to process resources, see aapt output above for details

问题似乎是这样的:

error: style attribute '@android:attr/textColor' not found.
Message{kind=ERROR, text=error: style attribute '@android:attr/textColor' not found., 
sources=[/Users/<username>/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/4215c9c9bb2efc5bb086ff343ac44128/res/values/values.xml], 
original message=, tool name=Optional.of(AAPT)}
Run Code Online (Sandbox Code Playgroud)

我找到了以下问题和答案,但是我相信它不在我们自己的项目中时会有所不同:无法完成Gradle Build,链接引用失败

发生这种情况的原因是什么,我该如何解决?

规格:

Android Studio 3.1.2
JRE:1.8.0_152-release-1024-b01 x86_64
buildTools版本:27.0.3
Gradle:4.6
Gradle插件:3.1.2

编辑:
万一我删除从我们的项目样式和属性的每一行,做一个干净的构建和缓存和重新启动,一切都无效,但在构建仍然指向其手指values.xmlcom.android.support:appcompat-v7:27.1.1

android android-appcompat android-styles android-gradle-plugin

4
推荐指数
1
解决办法
1756
查看次数