Gradle插件版本的更改是否会影响APK效果?

时间:2018-01-15 19:12:40

标签: android gradle android-build gradle-plugin

我最近将我的Android应用程序从使用Gradle Plugin 2.2.3 升级为Gradle Plugin 3.0.1。这些更改后,我的应用程序遭受了性能下降(在1s,但值得注意)启动活动时,在CursorLoader完成后重新加载视图等。

例如,在一种情况下,用户执行查询数据库并加载另一个屏幕的操作。这个时间以毫秒为单位从大约470毫秒变为1200毫秒。我觉得我应该首先解决为什么延迟会如此大,但我现在主要关注的是gradle插件版本更改会对它产生什么影响。

我决定通过仅升级到 2.3.0 来缩小问题范围。性能问题依然存在。这是我的项目级Gradle文件中的唯一更改,这是我重现缓慢行为所必需的:

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
    ...
}

更改为...

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0'
    ...
}

构建工具始终是版本26.0.2。我已经验证了运行Marshmallow的设备和运行Lollipop的设备的速度慢。我注意到在运行Nougat的设备上没有任何区别。

  1. 我认为Gradle插件版本控制更改会影响构建的APK性能是否合理?
  2. 这种单线改变的其他因素可能是错误的?
  3. 我可以提供哪些其他信息帮助我指明正确的方向?
  4. 感谢。

    编辑:我创建了一个重现此行为的示例应用。它包括两个活动。当我按下按钮时,第一个启动第二个。第二个活动为大量迭代执行虚拟 for 循环,在时间戳之前和之后进行记录。

    MainActivity:

    startActivity(new Intent(MainActivity.this, SecondActivity.class));
    

    SecondActivity:

    @Override
        public void onCreate(Bundle savedInstanceState) {
            Log.i(TAG, "SecondActivity:onCreate");
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Log.i(TAG, "Before wait...");
            for (int i = 0; i < 1000000000; i++) {
    
            }
            Log.i(TAG, "After wait...");
        }
    

    结果:

    2.2.3:
    01-15 14:23:54.65 I / SecondActivity:SecondActivity:onCreate
    01-15 14:23:54.705 I / SecondActivity:等待之前......
    01-15 14:23:56.635 I / SecondActivity:等待......
    (2秒)

    2.3.0:
    01-15 14:25:25.185 I / SecondActivity:SecondActivity:onCreate
    01-15 14:25:25.265 I / SecondActivity:等待之前...
    01-15 14:25:55.795 I / SecondActivity:等待......
    (30秒)

1 个答案:

答案 0 :(得分:0)

我转到首选项(构建,执行,部署&gt;即时运行)并禁用了即时运行。我的问题解决了。我想我已经习惯了这个功能,因为在旧版本上存在了这么长时间。

最近我可以在这里找到解释: https://medium.com/google-developers/instant-run-how-does-it-work-294a1633367f

  

从现在开始,每次调用一个方法 - 在我们的任何地方   app - 将注入到我们原始类文件中的工具   与App Server通信以查看它们是否已更新。

现在我只是停止将头撞在墙上。