Подтвердить что ты не робот

Не нашел класс по пути: DexPathList?

Мое приложение отлично работает, когда я тестирую на реальном устройстве с помощью USB в студии android. Но когда я отправляю apk на другое устройство и устанавливаю там, он не работает. Аpp get crashed. Я не нашел правильного пути для решить проблему. Ниже приведены ошибки:

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

Мои манифесты ниже:

`<?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 ниже:

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'
}
4b9b3361

Ответ 1

Я не нашел идеального решения для своей проблемы. Но когда я загружаю свой apk в игру Google и загружаю оттуда, приложение работает нормально. Это самое странное решение, которое я когда-либо нашел.

Ответ 2

Перейдите в файл на уровне проекта build.gradle и уменьшите версию зависимостей gradle до уровня ниже 2.3.0, скажем, используйте 2.2. 3

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

Затем clean → build → установить debug apk на другое устройство → это может быть ОК, тогда!

Ответ 3

Я думаю, что проблема заключается в том, что AndroidStudio привязывается к использованию "Instant Run" вместо компиляции и установки нового APK.

Отключите "Instant Run" из "Файл" → "Настройки" → "Сборка", "Выполнение", "Развертывание" → "Мгновенный запуск".

Ответ 4

в теге приложения измените

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

с

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

Надеюсь, это поможет :)

больше информации на:

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

Ответ 5

Вы должны следовать официальной документации: 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
    }
    ...
}

Класс YourApp

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

Ответ 6

defaultConfig {

    minSdkVersion 14
    targetSdkVersion 21

    multiDexEnabled true
}

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

Ответ 7

У меня также возникла аналогичная проблема. В моем случае я решил проблему, добавив это ниже buildTypes

dexOptions {
    javaMaxHeapSize "4g"
}

также используется

defaultConfig { 
          multiDexEnabled true
 } 

и

dependencies {
         compile 'com.android.support:multidex:1.0.0'
}

Ответ 8

Как вы сказали, вы создаете приложение и нажимаете на свой телефон через USB, я считаю, что вы скопировали apk из своего каталога сборки и попытались нажать и запустить на другом устройстве. Попробуйте построить свой apk без таргетинга или подключения какого-либо устройства или эмулятора, что я имею в виду, чтобы построить ваш apk с терминала без подключения вашего устройства. Либо это сработает, либо покажет что-то.

Ответ 9

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);
  }
}

Может быть, вы не делаете свое приложение Multidex.install (это);

Ответ 10

В файле build.gradle добавьте

defaultConfig { 
          multiDexEnabled true
 } 

Также добавьте зависимость как

dependencies {
         compile 'com.android.support:multidex:1.0.0'}

Ответ 11

Возможно, это связано с тем, что у вас есть функция мгновенного запуска, поэтому просто попробуйте Отключить мгновенный запуск.

Файл → Настройки → Сборка, выполнение, развертывание → Мгновенный запуск → Снимите флажок для мгновенного запуска

Ответ 12

  1. Выйти из Android студии
  2. Попробуйте удалить .idea и .graddle
  3. Перезапустите андроид студию и пересоберите свой проект

Это сработало как шарм для меня :)

Ответ 13

Мне пришлось включить поддержку Java 8 после обновления до Android Studio 3.5

Добавьте следующие строки в файл build.gradle:

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

Вы можете проверить документацию здесь:https://developer.android.com/studio/write/java8-support

Ответ 14

Мне кажется случайным решить эту проблему. Я просто меняю андроид: имя на MultiDex из Android, запускаю его, а затем меняю его на свое приложение.

Ответ 15

Сбросьте свой проект и отмените кеши/перезагрузите его в разделе раздела "Студийные файлы Android", он работает для меня.

Ответ 16

Для тех, кто работает с этим и использует Kotlin для своих контрольных тестов:

Имейте в виду, что пробелы в именах методов работают только для тестов JVM, а не для тестов на инструментальные средства Android (как отмеченные Джейком Уортоном, он также сказал, что это может быть исправлено в будущем)

В настоящий момент, когда я пытаюсь запустить тест, например:

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

Выход теста говорит:

Никаких тестов не было найдено

И в журнале говорится:

Запуск прогона

Не удалось выполнить тестовый запуск: прорыв инструментария произошел из-за сбоя процесса.

Пустой набор тестов.

Пока Logcat выводит это исключение:

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)

Как вы можете видеть, ошибки здесь не очень полезны, поэтому я надеюсь, что люди найдут этот ответ сейчас. Решение прост, используйте допустимые имена, например:

@Test
fun spaces_dontWorkInNames() {
}

Ответ 17

очистить кеш вашего мобильного устройства

Ответ 18

Вы можете обратиться к ответу Mohaimanul Chowdhury. Если вы используете пользовательский класс Application, измените его с расширения Application на MultiDexApplication

например

class YourApplication : Application()

в

class YourApplication : MultiDexApplication()

это исправило мою проблему

Ответ 19

Можете ли вы проверить, что ваша MainActivity написана с использованием Kotlin, а не Java?

Я отключил Kotlin и написал Activity с Kotlin, и это вызвало эту ошибку.

Ответ 20

Измените расширенный класс своего класса приложения

из public class MyApplication extends Application { ... }

на public class MyApplication extends MultiDexApplication { ... }

Для более подробного объяснения просто следуйте официальной документации: https://developer.android.com/studio/build/multidex.html#mdex-gradle

меня устраивает