Android Studio在i7处理器上使用100%CPU进行项目重建

时间:2015-07-10 21:50:30

标签: java android android-studio

我的Windows 7机器有一个四核i7处理器。当我重建我的项目时,平均需要25秒。当我启动应用程序时,平均需要36秒(在应用程序上传到设备之前)。

我的项目&s / src文件夹中有588个文件,其中包含我的所有java和xml代码。我的/ libs文件夹中有两个.so库,每个5MB和7个罐子。

请参阅我附带的屏幕截图。正如您所看到的,我的CPU在整个时间内都达到了100%。我的iTunes音乐暂停,我得到了一个“糟糕的表现”#34;弹出窗口任务栏右下角的弹出窗口。这有多糟糕。

我使用的是Android Studio 1.2.1.1

大部分时间都花在preDex和dex操作期间。

这是我迄今为止尝试过的内容(另外,我还没有尝试过这些内容):

  1. 添加gradle.properties - > " org.gradle.daemon =真"
  2. 省电
  3. 模式无效缓存/
  4. 重新启动全局Gradle设置 - >离线
  5. work Compiler - >自动创建项目
  6. 还没有任何效果。我无法想象这是一个常见问题,对吗?我是不是因为这真的比Eclipse慢得多?

    我想我的问题是:

    1. 这可能是由于我的罐子或文件的大小造成的吗?
    2. 我接管了一个在XML文件中有许多嵌套视图的项目。这会导致问题吗?
    3. 我真的很喜欢稻草,所以如果有人有任何信息,特别是为什么dex操作占用了这么多CPU,那就太棒了。

      我想不用说,如果我编辑XML文件,进行重建,然后启动应用程序,就会发生这种情况。如果没有什么可以清理和重建...... 当我做一个Make Project时......平均构建时间是3秒。

      enter image description here

4 个答案:

答案 0 :(得分:7)

以下是我能够做出的三项改进:

每次我构建项目时,我都会预先解析我的JAR,所以我找到了这个解决方案:

dexOptions {
    preDexLibraries = false
}

我使用的是整个Google Play服务库:

compile('com.google.android.gms:play-services:+') {
    exclude module: 'support-v4'
}

当我需要的只是Google Cloud Messenger:

compile('com.google.android.gms:play-services-gcm:+') {
    exclude module: 'support-v4'
}

在Eclipse中,我总是会进行重建,然后使用播放按钮启动应用程序。在Android Studio中,现在我只是做一个Clean,然后使用播放按钮启动应用程序。 Android Studio中的“运行”按钮在“清理”之后每次都不起作用。由于没有发生任何事情,这导致了似乎延迟的事情。所以现在我打开Gradle控制台以确保运行按钮正常工作,当它没有时,我只是第二次点击它。

我曾经拥有的东西:

Rebuild: 26 seconds
Launch:  36 seconds
Install: 15 seconds

现在:

Clean:    8 seconds
Launch:  22 seconds
Install: 15 seconds

这是一项重大改进!希望这有助于其他人。

答案 1 :(得分:5)

正如tracker page for this issue所述,该团队已将此确定为问题:

  

- parallel-threads仅适用于项目并行化。

     

对于并行运行的android任务,我们总是创建为   尽可能多的线程

在页面中,似乎他们的目标是发布1.3来解决这个问题(请参阅第13条评论)。

与此同时,帮助我应对Windows 7的是设置Android Studio流程(及其子流程)的CPU亲和力,以便至少保留一个核心(如第9条评论所示)页)。

有很多方法可以执行此操作,但您可能需要尝试top-voted answer on this superuser question(建议使用Process Lasso),这对我来说效果不错。

答案 2 :(得分:0)

除了特定于Gradle的优化(请参见下文)外,我建议您尝试针对Gradle缓存目录和Android Studio项目目录尝试禁用防病毒保护。对我来说,这大约由50%减少了我的生成时间。从Windows搜索索引中排除那些相同的目录也可以提供帮助。

摇篮优化我使用,在〜/ .gradle / gradle.properties。

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx6144m <-- Tweak this based on available RAM
org.gradle.caching=true
org.gradle.parallel=true
kotlin.incremental=true

请注意,启用缓存意味着在切换分支时有时必须显式清除缓存。当我遇到令人困惑的构建问题时,我会运行此脚本。

#!/bin/bash

# Clean Android cache
./gradlew cleanBuildCache

# Clean Gradle cache, prompting for each directory
find ~/.gradle/caches -maxdepth 1 -name build-cache* -print -exec rm -rfI {} \;

# Clean Project
./gradlew clean

# Stop Gradle Daemon
./gradlew --stop

答案 3 :(得分:-3)

说实话,由于UI设计师的缘故,Android Studio比Eclipse更好。缺点是它使用gradle而不是Ant。 Gradle也更好但速度更慢 - 特别是在Windows上。它在Linux上运行得更好。如果您以前没有使用过Linux,请不要担心。 Linux Mint是一个稳定的操作系统,其UI与Windows类似。你很快就会在家里。它消耗的资源更少,因此为gradle构建留下了更多的处理能力。进行切换。你永远不会回去。