Android Cordova 应用程序中缺少类 android.permission.FOREGOUND_SERVICE 导致加载时崩溃

问题描述 投票:0回答:1

我试图让一个应用程序在安装了后台插件的情况下运行,但每次它在手机上运行时,它都会死掉,抱怨类

android.permission.FOREGROUND_SERVICE
丢失了。

我尝试过 API 版本 31/32/33/34,但都出现相同的错误消息。

许多类似的 Cordova 插件也会出现同样的问题,所以我认为不是插件本身的问题。

android.permission.FOREGROUND_SERVICE
对我来说似乎很基本 - 有什么我可以添加到 Cordova
config.xml
来提醒编译器它需要类的副本吗?

这是错误消息,摘自

adb logcat

08-23 11:30:21.529 28849 28849 D AndroidRuntime: Shutting down VM
08-23 11:30:21.532 28849 28849 E AndroidRuntime: FATAL EXCEPTION: main
08-23 11:30:21.532 28849 28849 E AndroidRuntime: Process: com.xxxxx.app2, PID: 28849
08-23 11:30:21.532 28849 28849 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate application android.permission.FOREGROUND_SERVICE package com.xxxxx.app2: java.lang.ClassNotFoundException: Didn't find class "android.permission.FOREGROUND_SERVICE" on path: DexPathList[[zip file "/data/app/~~zp95Q-GplocZ3hovWWes8w==/com.xxxxx.app2-oMp7W0f6NGLjWSp5mW_CBw==/base.apk"],nativeLibraryDirectories=[/data/app/~~zp95Q-GplocZ3hovWWes8w==/com.xxxxx.app2-oMp7W0f6NGLjWSp5mW_CBw==/lib/arm64, /data/app/~~zp95Q-GplocZ3hovWWes8w==/com.xxxxx.app2-oMp7W0f6NGLjWSp5mW_CBw==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1520)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1444)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7187)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2288)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:106)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.os.Looper.loopOnce(Looper.java:240)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:351)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:8381)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
08-23 11:30:21.532 28849 28849 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.permission.FOREGROUND_SERVICE" on path: DexPathList[[zip file "/data/app/~~zp95Q-GplocZ3hovWWes8w==/com.xxxxx.app2-oMp7W0f6NGLjWSp5mW_CBw==/base.apk"],nativeLibraryDirectories=[/data/app/~~zp95Q-GplocZ3hovWWes8w==/com.xxxxx.app2-oMp7W0f6NGLjWSp5mW_CBw==/lib/arm64, /data/app/~~zp95Q-GplocZ3hovWWes8w==/com.xxxxx.app2-oMp7W0f6NGLjWSp5mW_CBw==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.Instrumentation.newApplication(Instrumentation.java:1251)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1512)
08-23 11:30:21.532 28849 28849 E AndroidRuntime:    ... 11 more

我检查过,网上很少有类似的报告问题:https://www.google.com/search?q=%22Didn%27t+find+class+android.permission%22并且没有一个报告原因或解决方案。

android cordova
1个回答
0
投票

这似乎是由构建系统中某处的缓存不良引起的。

为了解决这个问题,我必须

cordova clean
cordova platform remove android
,删除任何可能使用该权限的插件,在任何地方查找任何剩余的 FOREGROUND_SERVICE 提及并找出可能导致它们的原因,然后最终只需反转该过程 - 添加重新添加插件,重新添加 Android 平台,然后重新编译。

我认为发生的情况是,有一些东西导致构建系统相信它已经包含了 Java 类,所以当我添加一个需要它的插件时,它没有添加它,因为它认为它已经存在了.

要完全清楚的是,

cordova clean
还不够——我必须用核武器将这个东西几乎摧毁到地面并重建它。

© www.soinside.com 2019 - 2024. All rights reserved.