所以我构建了一个使用Signal R.的Android应用程序。
我已导入Github repo找到的signalr-client-sdk-android和signalr-client-sdk
每个文件的gradle构建成功,但当我尝试编译整个代码时,我收到以下消息:
经过一个小小的研究后,我发现显然我从repo下载的libs是使用jdk 1.7编译的,而我的Android工作室设置是使用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'
}
答案 0 :(得分:0)
您可以使用Java8。当你运行javac时,你必须给它提供参数' -target 1.7 -source 1.7'这样它就可以生成与Java7兼容的代码。您可以通过正确配置gradle构建脚本间接为自己的源代码执行此操作。
但是,我不认为这是你的问题。 android gradle工具将自动在源代码上正确运行javac。我希望问题出在您在项目中包含的第三方库中。
您需要确保您使用的每个库都是为Java7编译的。在类路径的某个地方,您有一个使用' -target 1.8'编译的.class文件。