繁体   English   中英

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

[英]Android Studio using 100% CPU on an i7 processor for project Rebuild

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

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

请参阅我附带的截图。 正如您所看到的,我的CPU在整个时间内都达到了100%。 我的iTunes音乐暂停,我在Windows任务栏的右下角出现“性能不佳”弹出窗口。 那真是太糟糕了。

我正在使用Android Studio 1.2.1.1

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

这是我到目前为止所尝试的内容(另外,我没有一起尝试过):

  1. 添加gradle.properties - >“org.gradle.daemon = true”
  2. 省电
  3. 模式无效缓存/
  4. 重新启动全局Gradle Setings - > Offline
  5. 工作编译器 - >自动生成项目

什么都没有奏效。 我无法想象这是一个常见的问题,对吗? 我是不是因为这真的比Eclipse慢得多?

我想我的问题是:

  1. 这可能是由于我的罐子大小等等?
  2. 我接管了一个在XML文件中有许多嵌套视图的项目。 这会导致问题吗?

我真的很喜欢吸管,所以如果有人有任何信息,特别是为什么dex操作占用了这么多的CPU,这将是非常棒的。

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

在此输入图像描述

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

我每次构建项目时都会预先解析我的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

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

如此问题跟踪页面所述,该团队已将此问题确定为问题:

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

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

从页面来看,似乎他们的目标是发布1.3来解决这个问题(参见评论#13)。

与此同时,帮助我应对Windows 7的是设置Android Studio进程(及其子进程)的CPU亲和性,以便至少保留一个核心(如页面上的注释#9所示)。

有很多方法可以做到这一点,但你可能想尝试这个超级用户问题 (建议使用Process Lasso )的最高投票答案,这似乎对我来说效果很好。

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

我使用的Gradle优化,在〜/ .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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM