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

Java Android Studio在i7处理器上使用100%CPU进行项目重建,java,android,android-studio,Java,Android,Android Studio,我的Windows 7机器有一个四核i7处理器。重建项目时,平均需要25秒。当我启动应用程序时,平均需要36秒(在将应用程序上载到设备之前) 我在项目的/src文件夹中有588个文件,其中包括我所有的java和xml代码。在我的/libs文件夹中,我有两个.so libs,每个5MB和7个jar 见我的附加屏幕截图。正如你所看到的,我的CPU在整个时间里都是100%的最大值。我的iTunes音乐暂停,我的windows任务栏右下角会弹出一个“性能不佳”的弹出窗口。这是多么糟糕 我正在使用Andr

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

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

见我的附加屏幕截图。正如你所看到的,我的CPU在整个时间里都是100%的最大值。我的iTunes音乐暂停,我的windows任务栏右下角会弹出一个“性能不佳”的弹出窗口。这是多么糟糕

我正在使用Android Studio 1.2.1.1

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

以下是我到目前为止尝试过的(单独尝试,我没有一起尝试):

  • 添加gradle.properties->“org.gradle.daemon=true”
  • 节电
  • 模式使缓存无效/
  • 重新启动全局渐变设置->脱机
  • 工作编译器->自动生成项目
  • 还没有任何效果。我无法想象这是一个普遍的问题,对吗?我是不是太乐观了,因为这真的比Eclipse慢很多

    我想我的问题是:

  • 这可能是因为我的JAR文件的大小吗
  • 我访问了一个在XML文件中有许多嵌套视图的项目。这会引起问题吗
  • 我真的在寻找救命稻草,所以如果有人有任何信息,特别是为什么dex操作占用了这么多CPU,那就太棒了

    如果我编辑一个XML文件,进行重建,然后启动应用程序,我想这是不言而喻的。如果没有什么需要清理和重建的。。。 当我只是做一个项目。。。平均构建时间为3秒


    老实说,Android Studio比Eclipse好很多,因为它有UI设计器。缺点是它使用gradle而不是Ant。Gradle也更好,但速度较慢,尤其是在Windows上。它在Linux上运行得更好。如果您以前没有使用过Linux,请不要担心。LinuxMint是一个稳定的操作系统,它有一个类似于Windows的UI。你马上就到家了。它消耗更少的资源,从而为gradle构建留下更多的处理能力。做出改变。你再也回不去了。

    如上所述,团队已确定这是一个问题:

    --并行线程仅适用于项目并行化

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

    从页面上看,他们似乎以1.3版为目标来解决这个问题(见评论13)

    与此同时,帮助我应对Windows7的是将Android Studio进程(及其子进程)的CPU亲和力设置为至少保留一个内核(如页面上的注释9所示)


    有很多方法可以做到这一点,但您可能想尝试一下(建议使用的)对我来说似乎足够好的方法。

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

    每次构建项目时,我都会预先准备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中,我总是进行重建,然后使用play按钮启动应用程序。在Android Studio中,现在我只是做了一个清理,然后用play按钮启动应用程序。此外,Android Studio中的Run按钮并不是每次清理后都能正常工作。这似乎造成了延误,因为什么都没有发生。所以现在我让Gradle控制台保持打开状态,以确保run按钮正常工作,当它不正常时,我只需再次点击它

    我曾经拥有的:

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

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

    这是一大进步!希望这能帮助其他人

    除了特定于Gradle的优化(见下文),我建议您尝试禁用Gradle缓存目录和Android Studio项目目录的防病毒保护。对我来说,这将减少大约50%的构建时间。从Windows搜索索引中排除这些相同的目录也会有所帮助

    我在~/.Gradle/Gradle.properties中使用的Gradle优化

    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
    

    对为什么开发环境编译和构建588文件项目需要38秒,并且在我的i7四核处理器上使用100%的CPU。如果从CLI运行构建需要多长时间?在Android Studio中,构建项目需要比在Eclipse中使用的长得多。这是非常不幸的。返回Eclipse不是一个选项,因为Eclipse ADT插件和ant不支持multidex,所以不能使用google play库。“gradlew.bat clean”后跟“gradlew.bat assembleDebug”等于5秒+47秒。在下载了最新的Java JDK和Android Studio,并让Android Studio基于“空白活动”生成我的第一个应用程序后,我也遇到了同样的问题。它创建它,然后使用100%的CPU进行2-3分钟的“索引”。我甚至还没有写一行代码,环境处于停滞状态!!是的,我想尝试一下,但我不确定为什么gradle会在Linux上使用更少的CPU?问题是我的CPU在30秒内从5%变为100%,唯一的变化是我正在运行gradle Build Yea,这让Android开发几乎无法忍受。到目前为止,我还没有看到任何解决办法。有一个叫做“并行性”的特性可以提高性能,但它仍然是实验性的。此外,如果您有子项目,您可以通过将它们打包为jar文件来节省一些编译时间。这只意味着编译器的工作量减少。这个答案并没有解决这个问题:在软件中改变操作系统来解决性能问题不是一个现实的答案。另一个答案表明问题出在软件本身内部。
    #!/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