繁体   English   中英

java.lang.RuntimeException:无法在路径上实例化应用程序 android.hardware.bluetooth:DexPathList

java.lang.RuntimeException: Unable to instantiate application android.hardware.bluetooth on path: DexPathList

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想使用 Ionic 4 编译 Android 12 应用程序。

当我使用适用于 Android <= 10 的 JDK8 + SDK Level 27.0.3 编译我的 ionic v4 项目时,它可以工作。

但是对于 Android 12,我需要使用 SDK 级别 31.0.0 + JDK 11 + Gradle 7.*并且它会崩溃

更新后,当我打开我的应用程序时,我看到启动屏幕半秒钟然后它崩溃了。

在我adb shell > logcat我得到

E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: com.myapp, PID: 28761
E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate application android.hardware.bluetooth package com.myapp: java.lang.ClassNotFoundException: Didn't find class "android.hardware.bluetooth" on path: DexPathList[[zip file "/data/app/~~8T8KfSjt3r4E8wgw-yQ0KA==/com.myapp-3qG2CR3HTq76WQg0MM5V1Q==/base.apk"],nativeLibraryDirectories=[/data/app/~~8T8KfSjt3r4E8wgw-yQ0KA==/com.myapp-3qG2CR3HTq76WQg0MM5V1Q==/lib/arm64, /data/app/~~8T8KfSjt3r4E8wgw-yQ0KA==/com.myapp-3qG2CR3HTq76WQg0MM5V1Q==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
E AndroidRuntime:   at android.app.LoadedApk.makeApplication(LoadedApk.java:1464)
E AndroidRuntime:   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7458)
E AndroidRuntime:   at android.app.ActivityThread.access$1700(ActivityThread.java:310)
E AndroidRuntime:   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2281)
E AndroidRuntime:   at android.os.Handler.dispatchMessage(Handler.java:106)
E AndroidRuntime:   at android.os.Looper.loopOnce(Looper.java:226)
E AndroidRuntime:   at android.os.Looper.loop(Looper.java:313)
E AndroidRuntime:   at android.app.ActivityThread.main(ActivityThread.java:8663)
E AndroidRuntime:   at java.lang.reflect.Method.invoke(Native Method)
E AndroidRuntime:   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
E AndroidRuntime:   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.hardware.bluetooth" on path: DexPathList[[zip file "/data/app/~~8T8KfSjt3r4E8wgw-yQ0KA==/com.myapp-3qG2CR3HTq76WQg0MM5V1Q==/base.apk"],nativeLibraryDirectories=[/data/app/~~8T8KfSjt3r4E8wgw-yQ0KA==/com.myapp-3qG2CR3HTq76WQg0MM5V1Q==/lib/arm64, /data/app/~~8T8KfSjt3r4E8wgw-yQ0KA==/com.myapp-3qG2CR3HTq76WQg0MM5V1Q==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
E AndroidRuntime:   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
E AndroidRuntime:   at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E AndroidRuntime:   at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E AndroidRuntime:   at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
E AndroidRuntime:   at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52)
E AndroidRuntime:   at android.app.Instrumentation.newApplication(Instrumentation.java:1177)
E AndroidRuntime:   at android.app.LoadedApk.makeApplication(LoadedApk.java:1456)
E AndroidRuntime:   ... 10 more

我在config.xml中使用

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.myappid" version="4.4.49" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android">
    <name>My app Title</name>
    <description>Blablabla</description>
    <author email="sales@myapp.com" href="http://myapp.com/">MyApp</author>
    <content src="index.html" />
    <access origin="*" />
    <allow-navigation href="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="ws://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="android-minSdkVersion" value="28" />
    <preference name="android-targetSdkVersion" value="31" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <preference name="loadUrlTimeoutValue" value="700000" />
    <platform name="android">
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
            <application android:usesCleartextTraffic="true" />
            <application android:requestLegacyExternalStorage="true" />
            <activity android:exported="true" />
            <uses-permission android:name="android.permission.BLUETOOTH" />
            <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
            <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
            <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
            <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
            <uses-feature android:name="android.hardware.bluetooth" android:required="true" />
        </edit-config>
        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
        <preference name="SplashMaintainAspectRatio" value="true" />
        <preference name="SplashShowOnlyFirstTime" value="true" />
        <preference name="AndroidPersistentFileLocation" value="Compatibility" />
        <preference name="loadUrlTimeoutValue" value="700000" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
    </platform>

它转化为我的AndroidManifest.xml

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="40449" android:versionName="4.4.49" package="com.myapp" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:exported="true" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:name="android.hardware.bluetooth" android:requestLegacyExternalStorage="true" android:required="true" android:supportsRtl="true" android:usesCleartextTraffic="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:exported="true" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@style/Theme.AppCompat.NoActionBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider android:authorities="${applicationId}.cordova.plugin.camera.provider" android:exported="false" android:grantUriPermissions="true" android:name="org.apache.cordova.camera.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/camera_provider_paths" />
        </provider>
        <activity android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden|screenSize" android:exported="false" android:name="com.google.zxing.client.android.CaptureActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" />
        <activity android:label="Share" android:name="com.google.zxing.client.android.encode.EncodeActivity" />
    </application>
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <queries>
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE" />
        </intent>
        <intent>
            <action android:name="android.intent.action.GET_CONTENT" />
        </intent>
        <intent>
            <action android:name="android.intent.action.PICK" />
        </intent>
        <intent>
            <action android:name="com.android.camera.action.CROP" />
            <data android:mimeType="image/*" android:scheme="content" />
        </intent>
    </queries>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-feature android:name="android.hardware.camera" android:required="true" />
</manifest>

如您所见,我认为我拥有蓝牙的所有正确权限,但为什么它在 Android 12 上崩溃了!?

1 个回复

好的,经过 3 天的胡说八道后,我终于明白了这个问题。

据此: https ://developer.android.com/studio/build/multidex.html

您需要为您的项目安装/启用 Multidex,因为如果它在启动时使用默认情况下未加载的类,它将因错误而崩溃:

java.lang.RuntimeException: Unable to instantiate application "blablabla"  on path: DexPathList

要在离子上解决此问题:

cordova plugin add cordova-plugin-enable-multidex

config.xml添加androidx.multidex.MultiDexApplication

    <platform name="android">
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
            ...
            <application android:name="androidx.multidex.MultiDexApplication" />
            ...

然后

ionic cordova platform remove android
ionic cordova platform add android
4 无法实例化应用程序java.lang.RuntimeException:…BackupDB无法转换为android.app.Application

清单:(局部视图)MainActivity,程序立即终止并在日志中发出消息。 它应该已经开始显示按钮以选择选项以继续执行。 在研究了该论坛几天后,我发现了一些帖子,建议将BackupDb放在清单中的应用程序内。 完成此操作后,我得到了日志中的消息。 在研究地点用尽之后,我想知道可能是什 ...

7 java.lang.RuntimeException:无法实例化应用程序

在 Google Play Developer Console 中,我看到此崩溃: 此崩溃主要发生在 Android 4.4 和 4.2 版本上。 这个答案表明当 dalvik 更新 apk 时会发生这种崩溃。 这似乎是一个低优先级的 Android 错误。 是否有任何解决方法? 是否有助于设 ...

9 java.lang.RuntimeException:无法实例化 Android 存根

对不起,如果这是一个重复的问题,它看起来很基本,但我找不到任何答案。 我正在尝试在 Kindle Fire 平板电脑上运行 Amazon 的 SNS KindleMobilePushApp 演示应用程序,但出现以下错误: 这发生在示例项目的此类的默认构造函数中: 这是从亚马逊库中的这个类派生 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM