При запуске моего приложения я получаю следующую ошибку:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.name.app/com.name.app.MainActivity}:
java.lang.ClassNotFoundException: Didn't find class "com.name.app.MainActivity" on path:
DexPathList[[zip file "/data/app/com.name.app-2/base.apk"],
nativeLibraryDirectories=[/vendor/lib, /system/lib]]
Я использовал анализатор apk Android Studio (Build > Analyze APK) для анализа моего apk (app/build/outputs/apk/debug/app-debug.apk), и структура classes.dex
такова
java/
lang/*
util/*
io/*
com/google/devtools/build/...
Я заметил, что мои собственные классы и, следовательно, MainActivity отсутствуют. Насколько я понимаю файлы dex (из этот вопрос SO) мой собственный занятия тоже должны быть. Поскольку их там нет, я понимаю, почему я получаю сообщение об ошибке, что мой класс не найден.
Я получаю эту ошибку на своем собственном устройстве: Samsung, Lollipop 5.0.2, API 21 и на виртуальном устройстве: Google Pixel, Oreo 8.0.0, API 26.
Что я пробовал
Я гуглил и нашел несколько предложений, но ни одно из них не сработало для меня. Эти предложения были:
Отключить мгновенный запуск. «Файл» > «Настройки» > «Сборка, выполнение, развертывание» > «Мгновенный запуск» > снимите флажок «Мгновенный запуск».
Очистите проект. Построить > Очистить. Затем перестройте проект, Build > Rebuild.
Недействительные кеши/перезапуск.
Удалите приложение с устройства и повторите попытку.
Используйте другое имя пути в файле
Manifest
. Заменитеandroid:name=".MainActivity"
наandroid:name="com.name.app.MainActivity"
в тегеactivity
.Отключите предварительное индексирование, как в этом ответе.
Добавлено следующее в build.gradle
dexOptions {
preDexLibraries false
}
- Включите multidex, перейдя по этой ссылке. Сначала включил multidex в
build.gradle
, а потом добавилMultiDexApplication
в свой манифест. МойMainActivity
расширяетAppCompatActivity
(и, следовательно, не расширяетApplication
).
Включение мультидекса дает аналогичную ошибку:
java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication:
java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path:
DexPathList[...]
Ниже приведены дополнения для включения multidex.
build.gradle
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
манифест (только соответствующая часть)
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
Примечание. Было еще одно предложение, связанное с библиотеками, см. этот ответ. Однако это было нацелено на Eclipse, и я не уверен, что это может быть решением моей проблемы. Gradle должен иметь дело со всеми зависимостями, верно? На всякий случай вот как я перечислил все свои зависимости в Gradle (версия Kotlin 1.2.51):
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-simplexml:2.3.0'
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testImplementation 'org.junit.platform:junit-platform-engine:1.2.0'
testImplementation 'org.jetbrains.spek:spek-api:1.1.5'
testImplementation 'org.jetbrains.spek:spek-junit-platform-engine:1.1.5'
}
Обновить
Я использую Android Studio 3.1.3. Я попытался запустить свое приложение на другом ноутбуке (через контроль версий, используя Android Studio 3.1.3), и там ошибка не появляется. Поскольку файлы абсолютно одинаковы, я подозреваю, что с моей настройкой Android Studio что-то не так.
Удаление Android Studio и всех его настроек, а затем загрузка и установка Android Studio с здесь не помогли. решать проблему.
7866bT-i2U8fT-8nEVVFCA==
? - person OneCricketeer   schedule 09.07.2018/data
. - person Abby   schedule 09.07.2018com.nane.app/com.name.app
- person OneCricketeer   schedule 09.07.2018