android - Android 的新 Jack 编译器真的那么慢吗?

标签 android android-gradle-plugin android-jack-and-jill

在我的一些 Android 项目中,我发现自从使用新的 Jack 编译器以来,构建变得非常缓慢。我需要它来使用 Java 8 功能,例如 lambda。

但是漫长的构建时间有点令人不安。所以我建立了一个新的Android项目。它只包含一个 MainActivity 和一个按钮,该按钮会在您的点击时使用react。

package de.xappo.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View view) {
                Toast.makeText(MainActivity.this, "Button clicked!", Toast.LENGTH_LONG).show();
            }
        });
    }
}

除了布局文件之外没有其他内容,它只包含 RelativeLayout 中的 TextViewButton

Profiling gradle buidling

正如您在图片中看到的,所有 jack gradle 任务加起来大约需要 75 秒。这是正常的吗?这个洞示例应用程序在没有千斤顶的情况下构建时间不到 22 秒。那么这种巨大的差异是否正常?

我已经在我的 gradle.properties 文件中管理了 Java 堆大小:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

还有什么可以提高jack编译性能的吗?或者您是否知道为缩短构建时间而计划对 jack 进行的任何更新?

最佳答案

根据 this announcement ,Android 上的 Jack 工具链已弃用,java8 支持将直接集成到 Android 的标准 javacdx 工具链中。我切换到 Jack 以获得 java8 支持,但随后转换到 retrolambda因为 jack 太慢了。

关于android - Android 的新 Jack 编译器真的那么慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976981/

相关文章:

android - 错误 :(27, 0) 在项目 ':library' 中找不到路径为 ':app' 的项目

java - Android N Java 8 功能(Jack 编译器)和 Kotlin 互操作

android - 当您的设备进入休眠状态时,Android 是否停止了您的线程

android - 如何将 "top -m 10 -n 1"命令输出保存到Android代码中的String?

带有 gradle 插件 2.0.0-alhpa8 的 Android studio 2.0 Preview 8,内存警告尽管堆大小为 4Gb

android-studio - 如何从 Codename One 的构建服务器构建原生 Android 源代码

android - 错误 :Execution failed for task :app:transformJackWithJackForDebug - Android?

android - jack 编译的代码可以在什么最低 SDK 版本上运行?

java - Android - 事务 - 任务尚未完成

java.lang.ClassCastException - 同一对象 - 两个类,为什么?