我已经看过很多关于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) 在Android 7中,您可以长按通知并选择显示来自所属应用程序的通知,而不显示声音.
对于Android 7,我们必须NotificationManager.areNotificationsEnabled()检查用户是否已阻止您的应用的通知.如何检查用户是否刚刚禁用了应用程序通知的声音?
更新: 问题仍然代表Android 8/O. 我们有一些用户抱怨没有听到任何声音,然后他们在不知情的情况下禁用它,没有我们有机会检查它.
Android 8具有后台执行限制,因此当我们开始定位Oreo时,我们将服务更改为使用JobIntentSerivce以便能够完成工作.
但是,我们有一个小部件,每隔几分钟就会使用实时分数数据进行更新.小部件的服务扩展了旧的RemoteViewsService.即使应用程序在后台,我们如何确保窗口小部件更新?
JobScheduler需要一个JobIntentSerivce我无法看到如何与之结合的RemoteViewsService(或者它可以以某种方式?)PendingIntent.getForegroundService() 在一个糟糕的互联网连接(或者可能是一个慢速设备)上并不完美,并且有时会给出一个ANR,当我们看到时间限制正在接近我们时,理想情况下我们并不真的想要显示通知我还没有尝试过BroadcastReceiver.goAsync(),但也许那是我最好的一击?
在这里做一些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 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吗?或者我该如何解决这个问题?
我还没有看到任何地方(例如 …
我有一个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 WebView,其中显示了一些https内容.服务器提供的SSL证书存在问题.当我在等待WebView信任的新证书时,我想知道如何手动验证SSL证书.
我WebViewClient在我onReceivedSslError收到SslError的主要错误代码的地方SslError.SSL_UNTRUSTED.在同一错误对象上我收到证书,一个实例SslCertificate.
有没有办法让我对该证书对象进行任何手动验证,以验证它是否值得信赖?
我对接受所有证书都不感兴趣,即使这是暂时的.
我已将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)
为什么会这样?我怎么能绕过它呢?
我得到的最接近的线索是https://forums.xamarin.com/discussion/28480/upload-to-appstore-failed-contains-an-invalid-key-cfbundleresourcespecification-in-bundle,但我找不到该选项在Xamarin Studio中提到过.
我不时会在Android Studio中使用Memory Monitor和HPROF Viewer来检查是否存在任何内存泄漏和内存使用情况.
我相信我知道查看器中使用的大多数符号和颜色的含义,但我想确定并且不仅仅是对它们有自己的理解.我没有在网上找到任何解释,但我确信我的问题的答案非常简单.
参考文献3中的下列符号是什么意思?
当实例的字体颜色为蓝色,红色,粗体或斜体时,这意味着什么?
有时符号1,2和3可以在同一实例中组合.这是否意味着特别的东西?
当悬停不同的图标时,我对HPROF Viewer的功能请求是一个工具提示.
我正在努力寻找与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().希望有一种更简单的方法来实现我想要的.
当我开始考虑使用相对较新的Snapshot API 获取天气时,当我无法找到返回结果的任何时间戳时,我有点困惑/担心.
我实现了API的使用,一切似乎都好了.但是,现在我已经Weather在三个截然不同的地方获得了相同的数据.现实生活中的条件和温度确实不一样(另一个设备提供了不同的(正确的)数据).
如果您信任API为您提供没有时间戳或位置的快照数据,或者您真正需要能够信任所返回数据的任何内容.
这是Snapshot API的已知问题吗?有没有办法避免这种情况发生?当天气像这样被卡住时你怎么能恢复?有没有办法知道返回的数据的年龄和/或位置?
我调试了有问题的设备,看到它不是缓存数据的应用程序,并且WeatherResult状态为成功.
我一直在遵循在 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.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.xml的com.android.support:appcompat-v7:27.1.1。
android android-appcompat android-styles android-gradle-plugin