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


68

我更新了我的androidstudio 2.1稳定版。根据Android Studio 2.1支持Android N开发者预览 版Android studio 2.1支持Jack(Java Android Compiler Kit)编译器。

如何在Android Studio中添加或使用Jack?

注意:

根据Android上的Java 8语言功能支持,不推荐使用Jack工具链。但是,您可以继续使用它来启用Java 8语言功能,直到可用替换为止。

自2017年3月14日发布公告起,杰克工具链已弃用。Jack是Android 6.0–8.1的默认Android构建工具链。

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

Answers:


137

有关使用Jack的要求以及如何使用的详细信息,可以在文档中找到。

这是文档中build.gradle有关如何使用jackOptions和设置compileOptionsJava 1.8的相关部分。

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

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

更新

根据这篇文章,现在认为Jack工具链已被弃用,并且根据该文章,正在做工作以原生支持Java 8功能,并将其作为Android构建系统的一部分在未来几周内进行。

该帖子还提到,如果您仍然想尝试使用Jack启用Java 8功能,那么从Jack迁移到新方法应该几乎没有工作。

UPDATE 2 Preview内置支持

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

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


1
太棒了!感谢您的答复。
2013年

27
我仍然遇到错误:Could not find property 'options' on task ':app:compileDebugJavaWithJack'.
IgorGanapolsky '16

4
@IgorGanapolsky我找到了一些将错误链接到注释处理器的引用。您是否有机会使用进行注解处理的任何库(例如匕首或牛刀)?看起来杰克最近才能够使用Android Gradle插件版本2.2.0-alpha1或更高版本在类路径上应用注释处理器。如果使用的是较低的版本,你可能可以指定注解处理器自己作为显示在这里
乔治·穆里根,

@GeorgeMulligan确实使用了注释处理器,但是使用了gradle插件2.1.0。
IgorGanapolsky

10
@GeorgeMulligan不,不是。差远了。收到数十个Jack错误。这个杰克工具非常愚蠢,应该在地狱中燃烧。
IgorGanapolsky

12

您可以通过在build.gradle文件中添加以下行来启用jack编译器。

android{

compileSdkVersion 23

buildToolsVersion "24rc2"

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


2

1- build.gradle(模块)

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

2-如果您使用使用Java 8 build.gradle的第三方(项目)

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

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

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

android {

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.