Android Studio 使用Java 8 混淆出错

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.*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值