如何在Android Studio中启用Jack(Java Android Compiler Kit)

68
我更新了Android Studio 2.1稳定版。根据Android Studio 2.1支持Android N Developer预览版。Android Studio 2.1支持Jack (Java Android Compiler Kit)编译器。
如何在Android Studio中添加或使用Jack? 注意:

根据Android上的Java 8语言特性支持,Jack工具链已被弃用。然而,在替代品推出之前,您可以继续使用它来启用Java 8语言特性

自2017年3月14日的公告以来,Jack工具链已被弃用。Jack是Android 6.0-8.1的默认Android构建工具链。

https://source.android.com/source/jack

6个回答

137

有关使用 Jack 所需的详细信息以及如何获取这些信息,请参阅文档

以下是来自文档中与在 build.gradle 中使用 jackOptions 并设置 java 1.8 的 compileOptions 相关的部分。

android {
    ...
    defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

更新

根据这篇文章,Jack工具链现在已被视为不推荐使用的,并且该文章中提到正在进行工作,以在未来几周内作为Android构建系统的一部分本地支持Java 8功能。

该文章还提到,如果您仍想尝试使用Jack启用Java 8功能,则迁移至新方法时应该几乎没有工作量。

更新2 预览版内置支持

您现在可以使用最新的Android Studio预览版2.4预览6尝试新的Java 8内置支持。

有关如何启用它或从Jack或Retrolambda进行迁移的更多信息,请参见文档


1
太棒了!感谢您的好回答。 - pRaNaY
27
我仍然会遇到一个错误:在任务 ':app:compileDebugJavaWithJack' 上找不到属性 'options'。 - IgorGanapolsky
4
我找到了一些引用,将该错误链接到注释处理器。你是否偶然使用任何进行注释处理的库,比如dagger或butterknife?看起来Jack只是最近才能够在Android Gradle插件版本2.2.0-alpha1或更高版本上应用类路径上的注释处理器。如果使用较低版本,您可以按照此处所示指定注释处理器。 - George Mulligan
@GeorgeMulligan 确实可以使用注解处理器,但要使用Gradle插件2.1.0。 - IgorGanapolsky
10
不,它并没有。甚至差得很远。出现了许多"Jack错误"。这个"Jack工具"非常愚蠢,应该下地狱。 - IgorGanapolsky
显示剩余2条评论

12
你可以通过在 build.gradle 文件中添加以下代码来启用 Jack 编译器。
android{

compileSdkVersion 23

buildToolsVersion "24rc2"

defaultConfig {
    ...
    jackOptions {
        enabled true
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}}

6

2

1- build.gradle (模块)

defaultConfig {
        //remove jackOptions 
        jackOptions {
            enabled true
        }
    }

如果您使用了一个使用Java 8的第三方库,那么需要在项目的build.gradle文件中进行设置。

buildscript {
    dependencies {
        //remove this line of your third-party dependency
        classpath 'PATH<VERSION>'
    }
}

3- 移除 Retrolambda,应用插件'....labmda'从您的模块 gradle 中删除这些行

4- 添加到 build.gradle(模块)中

android {

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

0

0

android{} 块中插入

jackOptions {
            enabled true
        }

IT解决方案


谢谢您的回答。但是现在 Jack 工具链 已经被弃用了。请查看 https://source.android.com/source/jack - pRaNaY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接