Intereting Posts
Реализация DLNA / UPnP (Win7 Play To) на мобильном устройстве Возвращает массив String по методу JNI Настройки Android-контроля AlertDialog setView SwipeRefreshLayout отключить анимацию перетаскивания AlertDialog внутри alertdialog android OpenCV Android: получить кадры камеры в фоновом режиме, не показывая на экране Android Bitmap Masking (Xfermode) оставляет непрозрачный черный фон позади Материальная карта с библиотекой Cardslib Как вы можете определить, была ли ваша активность приостановлена ​​из-за созданного вами PendingIntent? Создайте ключевой хеш для приложений Facebook на Android Где разместить значок 512×512 для запуска google play Почему MainActivity не может быть разрешен или не является полем? Bluetooth BLE Android записывается в периферийное устройство с максимальной пропускной способностью Использование CursorLoader без ContentProvider Navigator.geolocation.getCurrentPosition всегда получает тайм-аут в Android до тех пор, пока GPS / Location не будет

Android 5.x ClassNotFoundException отлично работает на 6.0+

Я обновил minSdkVersion моего проекта с 19 до 21. Это вызвало проблему с устройствами 5.0 / 5.1, где я не могу запустить приложение. Я продолжаю получать ClassNotFoundException в своем классе приложения. Ниже приведены полный журнал, класс приложения и файл градиента. Если я верну свой проект обратно в minSdkVersion 19, тогда приложение будет работать на 4.4+ без проблем.

Что я пробовал

  • Очистка / Восстановление

  • Обновление и понижение версии инструментальных средств сборки

  • Все библиотеки поддержки всех проектов имеют одинаковый номер версии

  • Предоставление всех моих явных классов относительным, а затем абсолютным

  • Обновлены все инструменты Sdk и сборки

Журнал

04-27 14:37:07.152 6278-6278/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.package.testapp, PID: 6278 java.lang.RuntimeException: Unable to instantiate application com.package.TestApplication: java.lang.ClassNotFoundException: Didn't find class "com.package.Application" on path: DexPathList[[zip file "/data/app/com.package.testapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.package.testapp-1/lib/x86_64, /vendor/lib64, /system/lib64]] at android.app.LoadedApk.makeApplication(LoadedApk.java:563) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4526) at android.app.ActivityThread.access$1500(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.package.TestApplication" on path: DexPathList[[zip file "/data/app/com.package.testapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.package.testapp-1/lib/x86_64, /vendor/lib64, /system/lib64]] 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.newApplication(Instrumentation.java:980) at android.app.LoadedApk.makeApplication(LoadedApk.java:558) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4526) at android.app.ActivityThread.access$1500(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Suppressed: java.lang.ClassNotFoundException: com.package.testapp.welcome.TestClaimApplication 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) ... 13 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

Gradle

  buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' repositories { maven { url 'https://maven.fabric.io/public' } } android { compileSdkVersion 25 buildToolsVersion '25.0.3' defaultConfig { applicationId "com.package.testapp" minSdkVersion 21 multiDexEnabled = true targetSdkVersion 25 versionCode 2 versionName "0.7" renderscriptTargetApi 18 // support mode not supported 21+ renderscriptSupportModeEnabled true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } dexOptions { javaMaxHeapSize "4g" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { checkReleaseBuilds false abortOnError false } productFlavors { companylocal companymaven } } dependencies { def ext = rootProject.ext; compile fileTree(include: ['*.jar'], dir: 'libs') compile "com.android.support:appcompat-v7:${ext.supportLibraryVersion}" compile "com.android.support:design:${ext.supportLibraryVersion}" compile 'com.romandanylyk:pageindicatorview:0.0.9' compile "com.jakewharton:butterknife:${ext.butterknifeLibraryVersion}" annotationProcessor "com.jakewharton:butterknife-compiler:${ext.butterknifeLibraryVersion}" compile "uk.co.chrisjenx:calligraphy:2.2.0" compile 'com.android.support:multidex:1.0.1' // Crashlytics Kit - for crash handling compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') { transitive = true } androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) testCompile 'junit:junit:4.12' testCompile 'org.robolectric:robolectric:3.0' testCompile "com.squareup.okhttp3:mockwebserver:${ext.okHttp3LibraryVersion}" testCompile('com.squareup.assertj:assertj-android:1.1.1') { exclude module: 'support-annotations' } } 

заявка

 public class TestApplication extends Application { Engine engine; @Override public void onCreate() { super.onCreate(); String privateServerUrlLocal = getString(R.string.server_url); ProfileLauncher profileLauncher = getProfileLauncher(); LoginLauncher loginLauncher = getLoginLauncher(); // Set up Crash Analytics final CrashlyticsCore crashlyticsCore = new CrashlyticsCore.Builder().disabled(DEBUG).build(); Fabric.with(this, new Crashlytics.Builder().core(crashlyticsCore).build()); Intent intent = new Intent(this, LogoutService.class); startService(intent); CertificatePinner certificatePinner = new CertificatePinner.Builder() .add("") .add("") .build(); engine = new Engine.Builder(privateServerUrlLocal, getString(R.string.other_server_url)) .setCertificatePinner(certificatePinner) .setSDKPartnerSetupManager(getSdkPartnerManager()) .setLogoutActionHandler(getLogoutActionHandler()) .setVLocationManager(new VLocationManagerImp()) .setDebug(DEBUG) .addDeepLinkHandler(new ClaimDeepLinkHandler(loginLauncher, profileLauncher)) .addDeepLinkHandler(new LinkGiftCodeDeeplinkHandler(loginLauncher, profileLauncher)) .addDeepLinkHandler(new OpenLinkDeepLinkHandler()) .addDeepLinkHandler(new DetailsDeepLinkHandler()) .addClaimConfig(new ClaimConfig(false, false, false, false, true)) .build(); engine.startup(this); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(base); } } 

манифест

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.package.testapp"> <uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.camera.flash" android:required="false" /> <!-- Required for g+ login --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application android:name=".TestApplication" android:allowBackup="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" android:theme="@style/AppTheme"> <service android:name="com.package.companycommon.ui.LogoutService" android:stopWithTask="true" /> <activity android:name=".LaunchActivity" 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=".welcome.WelcomeActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" /> <activity android:name=".RegisterActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" android:windowSoftInputMode="adjustResize" /> <activity android:name=".LoginActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" android:windowSoftInputMode="adjustResize" /> <activity android:name=".ActivationActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" android:windowSoftInputMode="adjustResize" /> <activity android:name=".AddPhoneNumberActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" android:windowSoftInputMode="adjustResize" /> <activity android:name=".ForgotPasswordActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" android:windowSoftInputMode="adjustResize" /> <activity android:name=".GiftHistoryActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" /> <activity android:name="com.package.PartnerLoginHiddenActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" /> <activity android:name=".tutorial.TutorialActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" /> <activity android:name=".CreateNewPasswordActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar.ClearStatus" /> <activity android:name=".settings.SettingsActivity" android:screenOrientation="portrait"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".GiftHistoryActivity" /> </activity> <activity android:name=".settings.ExtraSettingsActivity" android:label="@string/settings" android:screenOrientation="portrait"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".settings.SettingsActivity" /> </activity> <activity android:name="companyapp.company.NewsActivity" android:label="@string/notifications" android:screenOrientation="portrait" android:theme="@style/AppTheme" /> <activity android:name=".termsandconditions.CompanyTermsAndConditionsActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme" /> <activity android:name="com.package.companycommon.ui.PhotoViewerActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme" /> <activity android:name="com.package.company.details.CompanyDetailActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme" /> <activity android:name="com.package.company.details.CompanyDetailActivityLocation" android:screenOrientation="portrait" android:theme="@style/AppTheme"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.package.company.details.CompanyDetailActivity" /> </activity> <activity android:name="com.package.company.ClaimActivity" android:theme="@style/AppTheme.NoActionBar" tools:replace="android:theme" /> </application> </manifest> 

Попробуйте отключить опцию Instant Run, а затем запустите приложение. Это сработало для меня, когда я попытался найти множество решений, которые я, наконец, решил.

Введите описание изображения здесь

Это означает, что ваш multiDex не работает должным образом, поэтому некоторые файлы отсутствуют. Я думаю, что у Android 5 есть другой способ использования multiDex. Вы переопределили что-то в своем классе Aplication?

Попробуйте удалить compile 'com.android.support:multidex:1.0.1' . В документе Google говорится:

Поэтому, если ваш minSdkVersion равен 21 или выше, вам не нужна библиотека поддержки multidex.

Я отнюдь не уверен, что это помогает, но, возможно, стоит попробовать.

По какой-то причине этот класс больше не находится в вашем основном dex.

Объявите класс в списке основных классов , используя multiDexKeepFile (список классов в градиенте) или multiDexKeepProguard (указывая на определенный файл proguard для основных классов).

Попробуйте включить Progaud и отключить multidex.

Вы устраните эту проблему не только, но у вас будет меньше apk с более быстрой установкой и временем выполнения.

Примечание. Если вам нужна помощь в этом, просто оставьте комментарий, и мы сможем это исправить.

  • Хорошо, поэтому его не Progaurd или MultiDex

Ошибка в том, что com.package.Application отсутствует. Ни один из кода, который вы опубликовали (или манифест), не содержит ссылки на этот класс. Где вы определяете com.package.Application? И если вы не находитесь в своем проекте, то на него ссылаются? (Я бы сделал широкомасштабный поиск проекта «com.package.Application», чтобы разгадать это.)

Попробуйте дать полный путь в манифесте,

  <application android:name=".TestApplication" 

Также удалите папку сборки вручную – иногда чистая не работает. Также удалите приложение вручную и запустите.

Я сделал демо-версию из вашего кода и конфигурации, а его работа в нижнем зефире

Загрузите и проверьте его и сравните с вашим кодом. И еще одно, как вы создали проект с именем пакета com.package.testapp. Я не могу создать проект с таким же именем пакета

Создайте файл multidex-config.txt, чтобы сохранить эти классы в основном файле DEX:

 com/package/Application.class com/package/TestApplication.class com/package/testapp/welcome/TestClaimApplication.class 

Добавьте multiDexKeepFile в раздел android.buildTypes.release вашего build.gradle следующим образом:

 android { buildTypes { release { multiDexKeepFile file 'multidex-config.txt' } } } 

Вам нужна поддержка multidex? Я всегда сталкивался с проблемами. Я всегда понимал, что multidex используется в качестве последнего средства, если вы все еще используете предел метода 65k. Если вы не используете этот предел метода, вам не нужен multidex. Если вы используете этот предел, я бы предложил использовать progaurd для исправления проблемы в первую очередь. Если вы все еще выше предела метода даже после использования proguard, используйте multidex.

Вам нужно добавить свой андроид: имя с полным путем.

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

И ваше TestApplication должно расширить MultiDexApplication.

В соответствии с документацией, пожалуйста, обратитесь, если вам нужно больше информации. Документация MultiDex