it-swarm.com.de

Klasse auf Pfad nicht gefunden: DexPathList?

Meine App funktioniert einwandfrei, wenn ich ein echtes Gerät mit USB in Android Studio teste. Aber wenn ich die apk an ein anderes Gerät schicke und dort installiere, funktioniert es nicht Spiegel sind unten angegeben:

FATAL EXCEPTION: main Process: com.w3xplorers.cmch,PID: 17715                                                                           Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.w3xplorers.cmch/com.w3xplorers.cmch.MainActivity}: Java.lang.ClassNotFoundException: Didn't find class "com.w3xplorers.cmch.MainActivity" on path: DexPathList[[Zip file "/data/app/com.w3xplorers.cmch-1/base.apk"],nativeLibraryDirectories=[/data/app/com.w3xplorers.cmch-1/lib/arm, /system/lib, /vendor/lib, system/vendor/lib, system/vendor/lib/egl, system/lib/hw]]
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2395)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2544)
    at Android.app.ActivityThread.access$900(ActivityThread.Java:150)
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1394)
    at Android.os.Handler.dispatchMessage(Handler.Java:102)
    at Android.os.Looper.loop(Looper.Java:168)
    at Android.app.ActivityThread.main(ActivityThread.Java:5845)
    at Java.lang.reflect.Method.invoke(Native Method)
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.Java:797)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:687)
    Caused by: Java.lang.ClassNotFoundException: Didn't find class "com.w3xplorers.cmch.MainActivity" on path: DexPathList[[Zip file "/data/app/com.w3xplorers.cmch-1/base.apk"],nativeLibraryDirectories=[/data/app/com.w3xplorers.cmch-1/lib/arm, /system/lib, /vendor/lib, system/vendor/lib, system/vendor/lib/egl, system/lib/hw]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:469)
    at Android.app.Instrumentation.newActivity(Instrumentation.Java:1085)
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2385)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2544) 
    at Android.app.ActivityThread.access$900(ActivityThread.Java:150) 
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1394) 
    at Android.os.Handler.dispatchMessage(Handler.Java:102) 
    at Android.os.Looper.loop(Looper.Java:168) 
    at Android.app.ActivityThread.main(ActivityThread.Java:5845) 
    at Java.lang.reflect.Method.invoke(Native Method) 
    atcom.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:797) 
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:687)                                                                         Suppressed: Java.lang.ClassNotFoundException: com.w3xplorers.cmch.MainActivity
    at Java.lang.Class.classForName(Native Method)
    at Java.lang.BootClassLoader.findClass(ClassLoader.Java:781)
    at Java.lang.BootClassLoader.loadClass(ClassLoader.Java:841)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:504)                                                                                ... 12 more
    Caused by: Java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

Meine Manifeste sind unten:

`<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.w3xplorers.cmch">

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
<uses-permission Android:name="Android.permission.READ_CONTACTS" />
<uses-permission Android:name="Android.permission.WRITE_CONTACTS" />
<uses-permission Android:name="Android.permission.SEND_SMS" />


<application
    Android:name="com.w3xplorers.cmch.EnableMultiDex"
    Android:allowBackup="true"
    Android:icon="@mipmap/ic_launcher"
    Android:label="@string/app_name"
    Android:roundIcon="@mipmap/ic_launcher_round"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name="com.w3xplorers.cmch.MainActivity"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        Android:name="com.w3xplorers.cmch.HomeActivity"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" />
    <activity
        Android:name="com.w3xplorers.cmch.QuickSms"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" />
    <activity
        Android:name="com.w3xplorers.cmch.GroupSms"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" />
    <activity
        Android:name="com.w3xplorers.cmch.SelfSms"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" />
    <activity
        Android:name="com.w3xplorers.cmch.Contact"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" />
    <activity
        Android:name="com.w3xplorers.cmch.Favourite"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" />
    <activity
        Android:name="com.w3xplorers.cmch.Info"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar" />
    <activity Android:name="com.w3xplorers.cmch.Dialog" />
</application>

</manifest>`

Gradle unten:

apply plugin: 'com.Android.application'

Android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "com.w3xplorers.cmch"
    minSdkVersion 13
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
    }
}
}


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', 
{
    exclude group: 'com.Android.support', module: 'support-annotations'
})
compile 'com.Android.support:appcompat-v7:25.3.0'
compile 'com.Android.support.constraint:constraint-layout:1.0.0-alpha5'
compile 'com.Android.support:design:25.3.0'
compile 'com.andreabaccega:Android-form-edittext:1.0.3'
compile 'com.Android.volley:volley:1.0.0'
compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'com.Android.support:multidex:1.0.1'
testCompile 'junit:junit:4.12'
}
16
Avijit

Ich habe keine perfekte Lösung für mein Problem gefunden. Aber wenn ich meine apk auf google play hochlade und von dort herunterlade, funktioniert die App gut.

1
Avijit

Gehen Sie zu Ihrer Projektebene build.gradle -Datei und verringern Sie die Version der Gradle-Abhängigkeit auf einen Wert, der niedriger als 2.3.0 ist, beispielsweise 2.2.3.

dependencies {
    classpath 'com.Android.tools.build:gradle:2.2.3'
    ....
}

Dann clean -> build -> installiere debug apk auf einem anderen Gerät -> dann kann es OK sein!

8
ridoy

Ich denke, das Problem ist, dass AndroidStudio an "Instant Run" knüpft, anstatt ein neues APK zu kompilieren und zu installieren. 

Deaktivieren Sie "Instant Run" unter Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellung -> Instant Run.

5

Ändern Sie in Ihrem Anwendungs-Tag

Android:name="com.w3xplorers.cmch.EnableMultiDex"

mit 

Android:name="Android.support.multidex.MultiDexApplication" 

Hoffe das hilft :)

weitere Informationen unter:

https://developer.Android.com/studio/build/multidex.html

Wie Sie sagten, Sie bauen die App und werden per USB auf Ihr Telefon übertragen. Ich glaube, Sie haben die APK aus Ihrem Build-Verzeichnis kopiert und versucht, Push auf einem anderen Gerät auszuführen. Bitte versuchen Sie, Ihre APK zu bauen, ohne ein Gerät oder Emulator anzusprechen oder anzuschließen. Entweder wird es funktionieren oder es wird etwas angezeigt. 

2

Sie müssen der offiziellen Dokumentation folgen: https://developer.Android.com/studio/build/multidex.html#mdex-gradle

build.gradle:

dependencies {
  compile 'com.Android.support:multidex:1.0.1'
}
Android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

IhreApp-Klasse

public class MyApplication extends SomeOtherApplication {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}
2
Kirill Vashilo

In Ihrem build.gradle hinzufügen 

defaultConfig { 
          multiDexEnabled true
 } 

Fügen Sie auch eine Abhängigkeit als hinzu 

dependencies {
         compile 'com.Android.support:multidex:1.0.0'}
1
Smeet Hirekhan

Möglicherweise ist die Instant Run-Funktion aktiviert. Versuchen Sie also, Instant Run zu deaktivieren.

Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Instant Run -> Deaktivieren Sie das Kontrollkästchen für die sofortige Ausführung

1
Nikunj

Ich hatte auch ein ähnliches Problem. In meinem Fall löste ich das Problem, indem ich Folgendes hinzufügte buildTypes

dexOptions {
    javaMaxHeapSize "4g"
}

auch benutzt 

defaultConfig { 
          multiDexEnabled true
 } 

und

dependencies {
         compile 'com.Android.support:multidex:1.0.0'
}
1
Tamal
defaultConfig {

    minSdkVersion 14
    targetSdkVersion 21

    multiDexEnabled true
}

 dependencies {
     compile 'com.Android.support:multidex:1.0.1'
 }
Android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.Android.support:multidex:1.0.1'
}



public class MyApplication extends SomeOtherApplication {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}

Möglicherweise erstellen Sie nicht Ihre Anwendung Multidex.install (this);

1
tosslife

Können Sie überprüfen, ob Ihre MainActivity mit Kotlin anstelle von Java geschrieben wurde?

Ich habe Kotlin deaktiviert und schreibe Aktivität mit Kotlin und es hat diesen Fehler verursacht.

0
MJ Studio
  1. Versuchen Sie, .idea und .gradle zu löschen
  2. Starten Sie Android Studio neu und erstellen Sie ein neues Projekt 
  3. Es hat wie ein Zauber für mich funktioniert :)

It worked like a charm for me :)

0

An Personen, die darauf stoßen und Kotlin für ihre Instrumentierungstests verwenden:

Beachten Sie, dass Leerzeichen in Methodennamen nur für JVM-Tests und nicht Android Instrumentation Tests (als von Jake Wharton notiert , sagte er auch, dass dies in Zukunft behoben werden könnte)

Im Moment, wenn ich versuche, einen Test wie:

@Test
fun `spaces should work in names`() {
}

Testausgabe sagt:

Es wurden keine Tests gefunden

Und das Protokoll sagt:

Startete Tests

Testlauf fehlgeschlagen: Der Instrumentierungslauf ist fehlgeschlagen, da der Prozess abgestürzt ist.

Leere Testsuite.

Während Logcat diese Ausnahme ausgibt:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example, PID: 5424
    Java.lang.RuntimeException: Unable to instantiate instrumentation
    ComponentInfo{com.example.test/Android.support.test.runner.AndroidJUnitRunner}:
    Java.lang.ClassNotFoundException: Didn't find class
    "Android.support.test.runner.AndroidJUnitRunner"
    on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
        at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:5730)
        at Android.app.ActivityThread.-wrap1(Unknown Source:0)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1661)
        at Android.os.Handler.dispatchMessage(Handler.Java:105)
        at Android.os.Looper.loop(Looper.Java:164)
        at Android.app.ActivityThread.main(ActivityThread.Java:6541)
        at Java.lang.reflect.Method.invoke(Native Method)
        at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:240)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:767)
    Caused by: Java.lang.ClassNotFoundException: Didn't find class
    "Android.support.test.runner.AndroidJUnitRunner" on path:
    DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:93)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:379)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:312)
        at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:5728)
        at Android.app.ActivityThread.-wrap1(Unknown Source:0) 
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1661) 
        at Android.os.Handler.dispatchMessage(Handler.Java:105) 
        at Android.os.Looper.loop(Looper.Java:164) 
        at Android.app.ActivityThread.main(ActivityThread.Java:6541) 
        at Java.lang.reflect.Method.invoke(Native Method) 
        at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:240) 
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:767)

Wie Sie sehen können, sind die Fehler hier nicht sehr hilfreich, daher hoffe ich, dass die Leute diese Antwort jetzt finden. Die Lösung ist einfach. Verwenden Sie gültige Namen wie:

@Test
fun spaces_dontWorkInNames() {
}
0
arekolek

Sie können sich auf die Antwort von Mohaimanul Chowdhury beziehen. Wenn Sie eine benutzerdefinierte Anwendungsklasse verwenden, ändern Sie diese von "Application" in "MultiDexApplication"

zum Beispiel

class YourApplication : Application()

zu

class YourApplication : MultiDexApplication()

es hat mein Problem behoben

0
DTechnlogy

Es scheint mir zufällig, dieses Problem zu lösen. Ich ändere einfach den Android: Namen von Android auf MultiDex, starte ihn und ändere ihn dann in meine eigene App.

0
Pencilcheck

Löschen Sie Ihr Projekt und stornieren Sie Caches/Neustart in Ihrem Android-Studio-Dateibereich.

0
Shyam

Ich musste Java 8 Support nach dem Update auf Android Studio 3.5 aktivieren

Fügen Sie die folgenden Zeilen in Ihre build.gradle-Datei ein:

Android {
    defaultConfig {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Sie können die Dokumentation hier überprüfen: https://developer.Android.com/studio/write/Java8-support

0
Johan Ferreira

Ändern Sie die erweiterte Klasse Ihrer Anwendungsklasse

von public class MyApplication extends Application { ... }

zu public class MyApplication extends MultiDexApplication { ... }

Weitere Erklärungen finden Sie in der offiziellen Dokumentation: https://developer.Android.com/studio/build/multidex.html#mdex-gradle

für mich geht das