【问题标题】:Error converting bytecode to dex: Cause: Dex cannot parse version 52 byte code将字节码转换为 dex 时出错:原因:Dex 无法解析版本 52 字节码
【发布时间】:2017-01-20 18:12:17
【问题描述】:

所以我构建了一个使用 Signal R 的 Android 应用程序。

我已经导入了位于Github repo 的 signalr-client-sdk-android 和 signalr-client-sdk

每个文件的 gradle 构建成功,但是当我尝试编译整个代码时,我收到以下消息:

经过一项小型研究,我发现我从 repo 下载的库显然是使用 jdk 1.7 编译的,而我的 Android Studio 设置使用的是 1.8。

有什么办法可以解决这个问题吗?

您可以在下面找到我的 Gradle 文件:

我的应用 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'
apply plugin: 'com.google.gms.google-services'

repositories {
    maven {
        url 'https://maven.fabric.io/public'
    }
    maven {
        url 'https://clojars.org/repo'
    }
}

android {
    compileSdkVersion 25
    buildToolsVersion "23.0.2"

    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir 'src/main/libs'
    }

    defaultConfig {
        applicationId "com.pushdr.application"
        minSdkVersion 17
        targetSdkVersion 17

        ndk {
            moduleName "ndkVidyoSample"
        }
    }

    repositories {
        jcenter()
        maven {
            url "https://jitpack.io"
        }
        mavenCentral()
        maven {
            url 'https://github.com/FireZenk/maven-repo/raw/master/'
        }

    }

    allprojects {
        repositories {
            mavenCentral()
        }
    }

    buildTypes {
        release {
            shrinkResources false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    productFlavors {
        armv7a {
            ndk {
                abiFilter "armeabi-v7a"

            }
        }
        fat ///This build contain multi architecture binary
    }
}

dependencies {

    //facebook SDK

    //Used for Signal R + Chat

    //Used for PIN entry
    compile project(':pinentry')
        //Menu Drawer
    compile project(':materialTabs')
        //Credit Card Payment Libraries
    compile project(':creditcarddesign')
        //Audio waves
    compile project(':audiowaves')

    compile project(':signalr-client-sdk')
    compile project(':signalr-client-sdk-android')

    compile('com.crashlytics.sdk.android:crashlytics:2.6.4@aar') {
        transitive = true;
    }
    compile 'com.facebook.android:facebook-android-sdk:[4,5)'
    compile 'com.google.firebase:firebase-core:9.2.0'
    compile 'com.roger.gifloadinglibrary:gifloadinglibrary:1.0.0'
    compile 'com.wdullaer:materialdatetimepicker:2.5.0'
    compile 'com.synnapps:carouselview:0.0.9'
    compile 'com.ragnarok.rxcamera:lib:0.0.4'
    compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.17'
    compile 'com.stripe:stripe-android:2.0.2'
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile 'com.android.support:design:25.1.0'
    compile 'com.android.support:support-v4:25.1.0'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.github.2359media:EasyAndroidAnimations:0.8'
    compile 'com.mikepenz:crossfader:1.3.7@aar'
    compile 'com.mikepenz:crossfadedrawerlayout:0.3.4@aar'
    compile 'com.mikepenz:itemanimators:0.2.4@aar'
    compile 'com.mikepenz:google-material-typeface:2.2.0.1@aar'
    compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar'
    compile 'com.mikepenz:octicons-typeface:3.0.0.1@aar'
    compile 'com.github.amlcurran.showcaseview:library:5.4.3'
    compile 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
    compile 'com.google.code.gson:gson:2.8.0'

}

signalr - client - sdk - android: gradle

apply plugin: 'com.android.library'

repositories {
    maven {
        url 'https://clojars.org/repo'
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {}
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile project(':signalr-client-sdk')
}

signalr - client - sdk: gradle

apply plugin: 'java'

repositories {
    maven {
        url 'https://clojars.org/repo'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.3'
    compile 'org.java-websocket:java-websocket:1.3.1'
}

【问题讨论】:

标签: android android-gradle-plugin android-library signalr.client


【解决方案1】:

您可以使用 Java8。当你运行 javac 时,你必须给它参数 '-target 1.7 -source 1.7' 以便它产生与 Java7 兼容的代码。您可以通过正确配置您的 gradle 构建脚本来间接为您自己的源代码执行此操作。

但是,我认为这不是您的问题。 android gradle 工具将自动在您的源代码上正确运行 javac。我预计问题出在您项目中包含的第三方库上。

您需要确保您使用的每个库都是针对 Java7 编译的。在您的类路径中的某个位置,您有一个使用“-target 1.8”编译的 .class 文件。

【讨论】:

  • 我在我的 gradle 文件中添加了:targetCompability = '1.7' & sourceCompability = '1.7' 但我得到了同样的错误。你能更具体地说明地点吗?
  • 因为我没有你的整个项目,所以我不知道你有哪些为 Java8 编译的类文件(以及在哪些 jar 中)。您需要查看所有类文件才能找到它们。这个答案可以帮助你:stackoverflow.com/a/1096159/1172714
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多