Android Jack: Lambda, приходящая из jar файла, нуждается в их интерфейсах на пути к классу, который должен быть скомпилирован, неизвестными интерфейсами являются java.util.function.Consumer
Получение этого на студии Android 2.2.
У кого-нибудь есть обход?
Мой файл сборки приложения:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "acme.cb2"
minSdkVersion 18
targetSdkVersion 24
versionCode 1
versionName "1.0"
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
}
edit: modifid основной файл сборки, чтобы включить ответ от https://stackoverflow.com/users/5753091/mohammadreza-khalifeh - но это не помогло
import java.text.SimpleDateFormat
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'org.hidetake:gradle-ssh-plugin:2.4.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xbootclasspath/a:" + System.properties.get("java.home") + "/lib/rt.jar"
}
}
}
edit: добавление:
options.compilerArgs.each { println 'option: '+it}
выдает:
option: -Xbootclasspath/a:C:\Program Files\Java\jdk1.8.0_92\jre/lib/rt.jar
Похоже, что пробел в пути может вызвать проблему?
edit: try:
options.compilerArgs << "\""+"-Xbootclasspath/a:" + System.properties.get("java.home") + "/lib/rt.jar"+"\""
тоже не работает.
Ответы
Ответ 1
У меня возникла эта проблема после добавления библиотеки Guava
к моим зависимостям.
Решение заключалось в том, чтобы понизить версию lib с com.google.guava:guava:21.0
до com.google.guava:guava:20.0
.
Кроме того, я использую classpath 'com.android.tools.build: gradle: 2.5.0-alpha-preview-01`
РЕДАКТИРОВАТЬ:. Поскольку вы не используете эту библиотеку, попробуйте изменить:
Ответ 2
добавьте это в свой build.gradle:
allprojects {
repositories {
jcenter()
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xbootclasspath/a:" + System.properties.get("java.home") + "/lib/rt.jar"
}
}
}
Ответ 3
Try
classpath 'com.android.tools.build:gradle:2.3.+'
и
minSdkVersion 25
Ответ 4
модернизация андроид-студии, похоже, работает (но сейчас она очень медленная):
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "acme.cb2"
minSdkVersion 22
targetSdkVersion 25
versionCode 1
versionName "1.0"
jackOptions {
enabled true
}
}
dexOptions {
//javaMaxHeapSize "4G"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:support-v4:25.2.0'
}