由于:java.lang.ClassNotFoundException: 在路径上没有找到类“com.example.aol.Application”的错误,这是Flutter引起的。

3

我正在尝试运行一个项目,但发现了一个错误:

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.aol.Application" on path: DexPathList[[zip file "/data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/lib/arm64, /data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]

有人对下面的错误有什么想法吗:

error

这是相关的清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.aol" xmlns:tools="http://schemas.android.com/tools">
    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <application
        android:name=".Application" 
        tools:replace="android:label"
        android:label="aol"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="FLUTTER_NOTIFICATION_CLICK" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
           
        </activity>
        <activity android:name="com.braintreepayments.api.BraintreeBrowserSwitchActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="${applicationId}.braintree" />
            </intent-filter>
        </activity>
        <meta-data android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id"/>
    <!-- TODO: Replace with your real AdMob app ID -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value= "@string/android__admob_ads_id_key" />
        <activity android:name="com.facebook.FacebookActivity"
    android:configChanges=
            "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:label="@string/app_name" />
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>
    </application>
</manifest>


这是完整的错误信息:

Launching lib\main.dart on Redmi 5 in debug mode...
√ Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...                38.0s
E/AndroidRuntime(14356): FATAL EXCEPTION: main
E/AndroidRuntime(14356): Process: com.example.aol, PID: 14356
E/AndroidRuntime(14356): java.lang.RuntimeException: Unable to instantiate application com.example.aol.Application: java.lang.ClassNotFoundException: Didn't find class "com.example.aol.Application" on path: DexPathList[[zip file "/data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/lib/arm64, /data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
E/AndroidRuntime(14356):    at android.app.LoadedApk.makeApplication(LoadedApk.java:993)
E/AndroidRuntime(14356):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5801)
E/AndroidRuntime(14356):    at android.app.ActivityThread.-wrap1(Unknown Source:0)
E/AndroidRuntime(14356):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1685)
E/AndroidRuntime(14356):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(14356):    at android.os.Looper.loop(Looper.java:176)
/AndroidRuntime(14356):     at android.app.ActivityThread.main(ActivityThread.java:6651)
E/AndroidRuntime(14356):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(14356):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
E/AndroidRuntime(14356):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
E/AndroidRuntime(14356): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.aol.Application" on path: DexPathList[[zip file "/data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/lib/arm64, /data/app/com.example.aol-1JWhf7hk26dkh1US0WG4tg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
E/AndroidRuntime(14356):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
E/AndroidRuntime(14356):    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime(14356):    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(14356):    at android.app.Instrumentation.newApplication(Instrumentation.java:1088)
E/AndroidRuntime(14356):    at android.app.LoadedApk.makeApplication(LoadedApk.java:987)
E/AndroidRuntime(14356):    ... 9 more


请直接将错误信息发布到问题中,而不是作为图像。 - Christopher Moore
@ChristopherMoore 谢谢您的评论,我已经更新了我的问题:D - Mahmoud Al-Haroon
3个回答

4

我也遇到了同样的错误。在我的情况下,Application.java文件位于main/java/下。我通过创建另一个文件夹并将Application文件放入其中来解决问题,因此路径变为:main/java/your_folder_name/Application.java。别忘了在AndroidManifest文件中更新新的路径,使其变成以下形式:

.
.
.
<application
    <!--Here-->
    android:name=".your_folder_name.Application" 
    tools:replace="android:label"
    android:label="aol"
    android:icon="@mipmap/ic_launcher">

另一个原因可能是因为您的文件所在的包与您在中指定的不同。

2
我看到对于新创建的Flutter应用程序,AndroidManifest.xml中的application标签中的android:name不再存在。如果您在Activity.kt中没有任何自定义内容,则可以删除该XML属性。 Android文档表明这是可选的。

0

删除 android:name="com.yourpackage.xxxxx"

<application
        android:name="com.yourpackage.xxxxx"
        android:label="routingo"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接