java.lang.NoClassDefFoundError: Resolusi gagal dari: Lcom / mapbox / android / telemetry / MapboxTelemetry;

Sep 29 2020

Saya belajar kotak peta dan saya telah menerapkan kotak peta dengan kotlin mengikuti tutorial kotak peta berikut

tetapi ketika saya menjalankan kode saya mendapatkan pengecualian berikut ketika saya menjalankan perangkat nyata

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/mapbox/android/telemetry/MapboxTelemetry;
     at com.mapbox.mapboxsdk.module.telemetry.TelemetryImpl.<init>(TelemetryImpl.java:30)
     at com.mapbox.mapboxsdk.ModuleProviderImpl.obtainTelemetry(ModuleProviderImpl.java:22)
     at com.mapbox.mapboxsdk.Mapbox.initializeTelemetry(Mapbox.java:167)
     at com.mapbox.mapboxsdk.Mapbox.getInstance(Mapbox.java:64)
     at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:18)
     at android.app.Activity.performCreate(Activity.java:7224)
     at android.app.Activity.performCreate(Activity.java:7213)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2956)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3113)
     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1858) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6820) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:922)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.mapbox.android.telemetry.MapboxTelemetry" on path: DexPathList[[zip file "/data/app/com.example.myapplication-85zEOZQGHEn-PrcXcL50yg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-85zEOZQGHEn-PrcXcL50yg==/lib/arm, /system/lib]]
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

Saya ingin tahu apa yang menyebabkan pengecualian

apa yang telah saya coba, saya telah menambahkan aturan proguard kotak peta berikut

di bawah proguard-rules.pro saya

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-dontwarn com.mapbox.services.android.location.LostLocationEngine
-dontwarn com.mapbox.services.android.location.MockLocationEngine


# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

di bawah build.gradle (: app)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 14
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.1.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation project(':mapbox-android-sdk-9.5.0')

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

Saya ingin tahu di mana tepatnya saya telah membuat kesalahan, petunjuk, saran, bantuan yang sangat dihargai!

Jawaban

mortezahosseini Nov 07 2020 at 16:35

Saya pikir ketika Anda menambahkan kotak peta sebagai ketergantungan lokal, beberapa ketergantungan tidak termasuk dalam proyek, jadi tambahkan baris kode ini; yang memecahkan masalah saya, tentu saja menghasilkan kesalahan baru, tetapi hapus kesalahan telemetri:

implementation 'com.mapbox.mapboxsdk:mapbox-android-telemetry:6.2.0'