android - API 22 x_86级API上的ClassDefNoFound

标签 android android-layout android-studio android-fragments gradle

我在API level 22 (lollipop)手机中遇到一个奇怪的问题。

使用这些API级别的手机运行正常

  • API 24
  • API 23

  • 但是,当我在API级别22移动版上运行我的应用程序时,它会显示以下错误消息。
         Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" 
        on path: DexPathList[[zip file 
        "/data/app/com.myapp.app-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.app-1/lib/x86, /vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    

    但是,这不是与Picasso相关的问题,如果我删除Picasso library,它会在其他类上给我错误消息。
       Process: com.myapp.app, PID: 16327
       java.lang.NoClassDefFoundError: Failed resolution of: Lcom/myapp/app/VideosListActivity
           at com.myapp.app.MainActivity$8.onClick(MainActivity.java:422)
    

    Gradle文件(应用程序)
     compileSdkVersion 24
        buildToolsVersion "23.0.3"
        defaultConfig {
    
            applicationId 'com.myapp.app'
            minSdkVersion 21
            targetSdkVersion 24
            versionCode 26
            versionName "1.0"
            multiDexEnabled true
    
            ndk {
                abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
            }
    
        }
        lintOptions {
            abortOnError false
        }
        dexOptions {
            javaMaxHeapSize "4g"
            jumboMode true
        }
    
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    
        productFlavors {
        }
    }
    dependencies {
        compile 'com.android.support:appcompat-v7:24.2.1'
        compile 'com.android.support:design:24.2.1'
        compile 'com.google.maps.android:android-maps-utils:0.4'
        compile 'com.squareup.picasso:picasso:2.5.2'
        compile fileTree(include: ['*.jar'], dir: 'libs')
        testCompile 'junit:junit:4.12'
        compile project(':common')
        compile project(':commonwidget')
        compile project(':videowidget')
        compile 'com.android.support:multidex:1.0.1'
        compile 'org.apache.commons:commons-lang3:3.4'
        compile 'org.apache.httpcomponents:httpcore:4.4.1'
        compile 'com.google.code.gson:gson:2.4'
        compile 'com.squareup.okhttp:logging-interceptor:2.6.0'
        compile 'org.glassfish:javax.annotation:10.0-b28'
        compile 'io.card:android-sdk:5.4.0'
        compile 'it.sephiroth.android.library.targettooltip:target-tooltip-library:1.3.15'
        compile 'com.github.michaelye.easydialog:easydialog:1.4'
        compile 'org.jsoup:jsoup:1.8.3'
        compile 'me.grantland:autofittextview:0.2.+'
    
    
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    

    Gradle-项目
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            /**/
      /*      classpath 'com.android.tools.build:gradle:1.2.3'*/
            classpath 'com.android.tools.build:gradle:2.1.3'
            classpath 'com.google.gms:google-services:2.1.0'
            classpath 'com.google.code.gson:gson:2.2.4'
    
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    list
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.myapp.app">
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.CALL_PHONE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.GET_ACCOUNTS" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    
    
        <application
            android:name=".AnalyticsSampleApp"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:largeHeap="true"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <service android:name=".ticketing.services.LogoutService" />
    
    
            <activity
                android:name=".MainActivity"
                android:configChanges="orientation|keyboardHidden"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@style/AppTheme.NoActionBar" />
    
            <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
    
            <activity
                android:name=".MapsActivity"
                android:label="@string/title_activity_maps">
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value=".SplashDefaultActivity" />
            </activity>
            <activity
                android:name=".DirectionsActivity"
                android:label="@string/title_activity_directions"
                android:parentActivityName=".MapsActivity"
                android:theme="@style/AppTheme.NoActionBar">
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value=".SplashDefaultActivity" />
            </activity>
            <activity
                android:name=".SplashDefaultActivity"
                android:label="@string/app_name"
                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=".SplashVideoActivity"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@style/AppTheme.NoActionBar" />
    
                    <activity
                android:name=".VideosListActivity"
                android:configChanges="orientation|keyboardHidden"
                android:label="@string/title_activity_videos_list"
                android:screenOrientation="portrait"
                android:theme="@style/AppTheme" />
    
        <activity
                android:name=".VideoActivity"
                android:configChanges="orientation|screenSize"
                android:label="@string/title_activity_video"
                android:theme="@style/AppTheme" />
    

    最佳答案

    更改后,您是否手动重新同步了gradle?您还更改了build.gradle中的构建工具版本以匹配API 22吗?您显示的错误只有在gradle尚未正确重建或重新同步时才出现。我还将尝试从命令行手动执行此操作(在OS X中),./gradlew clean./gradlew assemble

    关于android - API 22 x_86级API上的ClassDefNoFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561715/

    相关文章:

    android - 如何每天更新主屏幕小部件

    android - 为什么 onStartLoading() 调用 api 级别 >= 27 的方向更改?

    android - NFC 贴纸/标签编码

    java - 如何从 Java 类调用 Kotlin 类

    java - GCM 消息已成功发送,但智能手机 android 未收到

    android - 在 ListView 中创建简单的字母滚动?

    android - 按钮 layout_height=线性布局内的 wrap_content 高度比 wrap_content 大得多

    Android ScrollView fillViewport 不工作

    android-studio - 安卓工作室 3.6 : Unable to run apk on emulator or device

    java - 更新到 Android Studio 3.2.1 后无法解决模块依赖关系