安卓的新Jack编译器真的那么慢吗?

3
在我的一些Android项目中,我发现使用新的Jack编译器后构建速度变得非常缓慢。我需要使用Java 8的特性,如lambda表达式。
但是长时间的构建时间有点令人不安。因此,我设置了一个新的Android项目。它只包含一个MainActivity,其中有一个按钮,可以在您点击时触发。
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();
            }
        });
    }
}

除了布局文件中只包含一个 TextView 和一个 Button,并位于一个 RelativeLayout 中,没有其他内容。

Profiling gradle buidling

正如您在图片中所看到的,所有的Jack gradle任务加在一起需要约75秒钟的时间。这正常吗?没有使用Jack的情况下,整个示例应用程序的构建时间少于22秒。因此,这种巨大的差异是否正常?
我已经在我的gradle.properties文件中管理了Java堆大小:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

还有什么方法可以提高jack编译性能吗?或者你是否知道有关jack改进构建时间的任何更新计划?


可能是因为CA正在使用清晰构建... - Selvin
我注意到Jack工具链在处理Google服务和Firebase等依赖项方面存在很大困难。 - dev.bmax
同时,InstantRun目前无法与Jack兼容,这也可能对构建/运行性能产生巨大影响。 - danypata
这是一个打字错误,我想表达的是CI(持续集成)。 - Selvin
我支持这个问题,它确实非常慢。 - Achmad Naufal Syafiq
显示剩余2条评论
1个回答

2
根据这篇公告,Android上的Jack工具链已经被废弃,java8支持将直接集成到Android标准的javacdx工具链中。我曾转用Jack来支持java8,但由于速度太慢,后来转向使用retrolambda

是的,我也是。但那是因为当我使用Jack时,Proguard没有混淆我的代码。 - unlimited101

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