Error:Execution failed for task ‘:app:transformJackWithJackForRelease’.
com.android.build.api.transform.TransformException: com.android.builder.core.JackToolchain$ToolchainException: Jack configuration exception.
Error while parsing ‘/Users/…/AndroidStudioProjects/…/app/proguard-rules.pro’:83
介绍这个问题前首先要明白Android Studio 配置java8的两种方法:
1、在主 module (app) 的 build.gradle 里配置,开启 jack 编译器,使用 Java8 进行编译。
apply plugin: 'com.android.application'
android {
...
defaultConfig {
//开启jack编译器
jackOptions {
enabled true
}
}
//java8 配置
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
上面的错误就是因为 jack 编译器 混淆产生的,这种方法还没找到解决的办法。所以请切换到第二种配置。
2、使用插件retrolambda
在项目的build.gradle(Project)文件中添加
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'me.tatarka:gradle-retrolambda:3.6.1'//这个是重点
}
}
然后在build.gradle(app)文件中添加
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'//这个是重点
android {
...
//java8 配置
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//这个是重点
retrolambdaConfig 'net.orfjackal.retrolambda:retrolambda:+'
}
使用第二种配置方法然后在 proguard-rules.pro文件中添加以下混淆规则就OK了。
## see https://github.com/evant/gradle-retrolambda for java 8
-dontwarn java.lang.invoke.*