Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

配置 Android Studio

Android Studio 提供诸多向导和模板,可用于验证系统要求(例如 Java 开发工具包 (JDK) 和可用 RAM)和配置默认设置(例如经过优化的默认 Android Virtual Device (AVD) 模拟和更新后的系统映像)。本文档介绍了您可能需要使用的其他配置设置,以便您自定义对 Android Studio 的使用方式。

您可以通过 Android Studio 的 Help 菜单访问下面这两个配置文件:

  • studio.vmoptions:自定义 Studio 的 Java 虚拟机 (JVM) 选项,例如堆大小和缓存大小。请注意,在 Linux 计算机上,此文件可能会命名为 studio64.vmoptions,具体取决于您的 Android Studio 版本。
  • idea.properties:自定义 Android Studio 的属性,例如插件文件夹路径或支持的文件大小上限。

如需模拟器和设备的设置及使用方式的相关文档,请参阅以下主题:

查找配置文件

两个配置文件都存储在 Android Studio 的配置文件夹中。文件夹名称取决于您的 Studio 版本。例如,Android Studio 3.3 的文件夹名称为 AndroidStudio3.3。此文件夹的位置取决于您的操作系统:

  • Windows:%USERPROFILE%\.CONFIGURATION_FOLDER
  • macOS:~/Library/Preferences/CONFIGURATION_FOLDER
  • Linux:~/.CONFIGURATION_FOLDER

您也可以使用以下环境变量指向其他位置的特定替换文件:

  • STUDIO_VM_OPTIONS:设置 .vmoptions 文件的名称和位置
  • STUDIO_PROPERTIES:设置 .properties 文件的名称和位置
  • STUDIO_JDK:设置运行 Studio 所使用的 JDK

自定义虚拟机选项

通过 studio.vmoptions 文件,您可以自定义 Android Studio 的 JVM 的选项。为了提高 Studio 的性能,最常用的调节选项是最大堆大小,但您也可以使用 studio.vmoptions 文件替换其他默认设置(例如初始堆大小、缓存大小和 Java 垃圾回收开关)。

要创建新的 studio.vmoptions 文件或打开现有文件,请按以下步骤操作:

  1. 依次点击 Help > Edit Custom VM Options。如果您之前从未修改过适用于 Android Studio 的虚拟机选项,IDE 将提示您新建一个 studio.vmoptions 文件。点击 Yes 以创建文件。
  2. studio.vmoptions 文件会在 Android Studio 的编辑器窗口中打开。修改该文件以添加您自己的自定义虚拟机选项。如需可自定义 JVM 选项的完整列表,请参阅 Oracle 的 Java HotSpot 虚拟机选项页面。

您创建的 studio.vmoptions 文件将添加到默认的 studio.vmoptions 文件中,后者位于 Android Studio 安装文件夹内的 bin/ 目录中。

请注意,切勿直接修改 Android Studio 程序文件夹内的 studio.vmoptions 文件。尽管您可以访问该文件来查看 Studio 的默认虚拟机选项,但仅修改自己的 studio.vmoptions 文件可确保您不会替换 Android Studio 的重要默认设置。因此,在您的 studio.vmoptions 文件中,请仅替换您关注的属性,并允许 Android Studio 继续使用您未更改的所有属性的默认值。

最大堆大小

默认情况下,Android Studio 的最大堆大小为 1280MB。如果您要处理大项目,或者您的系统有大量 RAM 可用,您可以通过在 Android Studio 的虚拟机选项中增加最大堆大小来提升性能。如果系统的内存有限,您可能希望降低最大堆大小。

要更改最大堆大小,请按以下步骤执行操作:

  1. 依次点击 Help > Edit Custom VM Options 以打开 studio.vmoptions 文件。
  2. studio.vmoptions 文件添加一行,以使用语法 -XmxheapSize 设置最大堆大小。您选择的大小应该基于项目大小以及计算机上的可用 RAM。作为基准,如果您有 4GB 以上的 RAM 和中等大小的项目,则应该将最大堆大小设置为 2GB 或更高。以下行会将最大堆大小设置为 2GB:

    -Xmx2g
        
  3. 保存您对 studio.vmoptions 文件所做的更改,然后重启 Android Studio 以使更改生效。

  4. 要确认新的最大堆大小,请打开命令行,然后输入以下命令:

        $ jps -lvm
        

    您将看到计算机上正在运行的插桩 JVM 的列表,其中包括每个 JVM 的完整软件包名称和传入的参数。找到与您的 Android Studio 实例对应的项。该项应以 -Didea.paths.selector=AndroidStudio[Version] 结尾。对于此 JVM,您应该看到两个以 -Xmx 开头的参数:一个采用默认值 1280mb,另一个采用新值(如图 1 所示)。

    图 1. 显示 Android Studio JVM 当前参数的终端输出。

    1. -Xmx 参数显示默认最大堆大小(在本例中为 1280m)。
    2. -Didea.paths.selector 显示当前正在运行的 Android Studio 版本。
    3. -Xmx 参数显示新的自定义最大堆大小。请注意,该参数后跟您之前创建的自定义 studio.vmoptions 文件的位置。

导出和导入 IDE 设置

您可以导出一个 Settings.jar 文件,其中包含项目的全部或部分首选 IDE 设置。然后,您可以将 JAR 文件导入其他项目并/或使 JAR 文件可供您的同事导入到其项目中。

如需了解详情,请参阅 IntelliJ IDEA 中的导出和导入设置

自定义 IDE 属性

通过 idea.properties 文件,您可以自定义 Android Studio 的 IDE 属性,例如用户所安装插件的路径以及 IDE 支持的文件大小上限。idea.properties 文件会与 IDE 的默认属性合并,以便您可以仅指定替换属性。

要创建新的 idea.properties 文件或打开现有文件,请按以下步骤操作:

  1. 依次点击 Help > Edit Custom Properties。如果您之前从未修改过 IDE 属性,Android Studio 将提示您新建一个 idea.properties 文件。点击 Yes 以创建文件。
  2. idea.properties 文件会在 Android Studio 的编辑器窗口中打开。修改该文件以添加您自己的自定义 IDE 属性。

以下 idea.properties 文件包括通常自定义的 IDE 属性。如需获得完整的属性列表,请参阅 IntelliJ IDEA 的 idea.properties 文件

#---------------------------------------------------------------------
    # Uncomment this option if you want to customize path to user installed plugins folder. Make sure
    # you're using forward slashes.
    #---------------------------------------------------------------------
    # idea.plugins.path=${idea.config.path}/plugins
    #---------------------------------------------------------------------
    # Maximum file size (kilobytes) IDE should provide code assistance for.
    # The larger file is the slower its editor works and higher overall system memory requirements are
    # if code assistance is enabled. Remove this property or set to very large number if you need
    # code assistance for any files available regardless their size.
    #---------------------------------------------------------------------
    idea.max.intellisense.filesize=2500
    #---------------------------------------------------------------------
    # This option controls console cyclic buffer: keeps the console output size not higher than the
    # specified buffer size (Kb). Older lines are deleted. In order to disable cycle buffer use
    # idea.cycle.buffer.size=disabled
    #---------------------------------------------------------------------
    idea.cycle.buffer.size=1024
    #---------------------------------------------------------------------
    # Configure if a special launcher should be used when running processes from within IDE.
    # Using Launcher enables "soft exit" and "thread dump" features
    #---------------------------------------------------------------------
    idea.no.launcher=false
    #---------------------------------------------------------------------
    # To avoid too long classpath
    #---------------------------------------------------------------------
    idea.dynamic.classpath=false
    #---------------------------------------------------------------------
    # There are two possible values of idea.popup.weight property: "heavy" and "medium".
    # If you have WM configured as "Focus follows mouse with Auto Raise" then you have to
    # set this property to "medium". It prevents problems with popup menus on some
    # configurations.
    #---------------------------------------------------------------------
    idea.popup.weight=heavy
    #---------------------------------------------------------------------
    # Use default anti-aliasing in system, i.e. override value of
    # "Settings|Editor|Appearance|Use anti-aliased font" option. May be useful when using Windows
    # Remote Desktop Connection for instance.
    #---------------------------------------------------------------------
    idea.use.default.antialiasing.in.editor=false
    #---------------------------------------------------------------------
    # Disabling this property may lead to visual glitches like blinking and fail to repaint
    # on certain display adapter cards.
    #---------------------------------------------------------------------
    sun.java2d.noddraw=true
    #---------------------------------------------------------------------
    # Removing this property may lead to editor performance degradation under Windows.
    #---------------------------------------------------------------------
    sun.java2d.d3d=false
    #---------------------------------------------------------------------
    # Workaround for slow scrolling in JDK6
    #---------------------------------------------------------------------
    swing.bufferPerWindow=false
    #---------------------------------------------------------------------
    # Removing this property may lead to editor performance degradation under X Window.
    #---------------------------------------------------------------------
    sun.java2d.pmoffscreen=false
    #---------------------------------------------------------------------
    # Workaround to avoid long hangs while accessing clipboard under Mac OS X.
    #---------------------------------------------------------------------
    # ide.mac.useNativeClipboard=True
    #---------------------------------------------------------------------
    # Maximum size (kilobytes) IDEA will load for showing past file contents -
    # in Show Diff or when calculating Digest Diff
    #---------------------------------------------------------------------
    # idea.max.vcs.loaded.size.kb=20480
    

针对低内存计算机配置 IDE

如果您要在低于建议规格(请参阅系统要求)的计算机上运行 Android Studio,则可以按如下方式自定义 IDE 以提升计算机性能:

  • 减小 Android Studio 可用的最大堆大小:将 Android Studio 的最大堆大小减小至 512Mb。要详细了解如何更改最大堆大小,请参阅最大堆大小
  • 更新 Gradle 和 Android Plugin for Gradle:更新至最新版本的 Gradle 和 Android Plugin for Gradle,以确保您能利用最新的性能改进。要详细了解如何更新 Gradle 和 Android Plugin for Gradle,请参阅 Android Plugin for Gradle 版本说明
  • 启用节能模式:启用节能模式会关闭一系列消耗大量内存和电池的后台操作,包括错误突出显示和动态检查、自动弹出式代码完成和自动增量式后台编译。要开启节能模式,请依次点击 File > Power Save Mode
  • 停用不必要的 lint 检查:要更改 Android Studio 在您的代码上运行的 lint 检查,请执行以下操作:

    1. 依次点击 File > Settings(在 macOS 上,依次点击 Android Studio > Preferences)以打开 Settings 对话框。
    2. 在左侧窗格中,展开 Editor 部分,然后点击 Inspections
    3. 点击相应的复选框以选中或取消选中适合项目的 lint 检查。
    4. 点击 ApplyOK 以保存所做的更改。
  • 在物理设备上调试:在模拟器上调试使用的内存比在物理设备上调试使用的内存更多,因此您可以通过在物理设备上调试来提升 Android Studio 的总体性能。

  • 仅将必要的 Google Play 服务作为依赖项包含在内:将 Google Play 服务作为依赖项包含在项目中会增加所需的内存量。仅添加必要的依赖项以提高内存利用率和性能。如需了解详情,请参阅将 Google Play 服务添加到您的项目中

  • 开启 Gradle 的离线模式:如果您的带宽有限,请开启离线模式,以防 Gradle 在您编译期间尝试下载缺失的依赖项。离线模式开启时,Gradle 会在您缺少任何依赖项时发出编译故障,而不会尝试下载它们。要开启离线模式,请执行以下操作:

    1. 依次点击 File > Settings(在 macOS 上,依次点击 Android Studio > Preferences)以打开 Settings 对话框。
    2. 在左侧窗格中,展开 Build, Execution, Deployment,然后点击 Gradle
    3. 在 Global Gradle 设置下,选中 Offline work 复选框。
    4. 点击 ApplyOK 以使更改生效。
  • 减少可用于 Gradle 的最大堆大小:Gradle 的默认最大堆大小为 1536 MB。您可以通过替换 gradle.properties 文件中的 org.gradle.jvmargs 属性来减小此值,如下所示:

    # Make sure to gradually decrease this value and note
        # changes in performance. Allocating too lttle memory may
        # also decrease performance.
        org.gradle.jvmargs = -Xmx1536m
        
  • 不要启用并行编译:Android Studio 可以并行编译独立模块,但如果您使用的是低内存系统,则不应启用此功能。要检查此设置,请执行以下操作:

    1. 依次点击 File > Settings(在 macOS 上,依次点击 Android Studio > Preferences)以打开 Settings 对话框。
    2. 在左侧窗格中,展开 Build, Execution, Deployment,然后点击 Compiler
    3. 确保 Compile independent modules in parallel 选项未选中。
    4. 如果您进行了更改,请点击 ApplyOK 以使更改生效。

针对 Instant Run 配置您的项目

Instant Run 是 Run Debug 命令的行为,可以大幅缩短应用更新的间隔时间。尽管首次编译可能需要花费较长的时间,Instant Run 在向应用推送后续更新时则无需编译新的 APK,因此,这样可以更快地看到更改。

默认情况下,Android Studio 会为使用 Android Plugin for Gradle 2.0.0 及更高版本编译的项目启用 Instant Run。您可以通过修改项目的一些设置来提高使用 Instant Run 的编译性能。要详细了解如何针对 Instant Run 配置项目,请参阅针对 Instant Run 配置和优化项目

设置 JDK 版本

Android Studio 2.2 及更高版本捆绑提供了最新版本的 OpenJDK,这是我们建议用于 Android 项目的 JDK 版本。要使用捆绑的 JDK,请执行以下操作:

  1. 在 Android Studio 中打开您的项目,然后在菜单栏中依次选择 File > Project Structure
  2. SDK Location 页面中的 JDK location 下方,选中 Use embedded JDK 复选框。
  3. 点击 OK

默认情况下,用于编译项目的 Java 语言版本基于项目的 compileSdkVersion(因为不同 Android 版本支持不同版本的 Java)。如有必要,您可以通过将以下 CompileOptions {} 代码块添加到 build.gradle 文件来替换此默认 Java 版本:

android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION\_1\_6
            targetCompatibility JavaVersion.VERSION\_1\_6
        }
    }
    

要详细了解在何处定义 compileSdkVersion,请参阅模块级编译文件

设置代理设置

代理作为 HTTP 客户端和网络服务器之间的中间连接点,可提高互联网连接的安全性和隐私性。

要支持在防火墙后面运行 Android Studio,请为 Android Studio IDE 设置代理设置。使用 Android Studio IDE HTTP 代理设置页面可为 Android Studio 设置 HTTP 代理设置。

若从命令行或在未安装 Android Studio 的计算机(例如持续集成服务器)上运行 Android Plugin for Gradle,请在 Gradle 编译文件中设置代理设置。

设置 Android Studio 代理

Android Studio 支持 HTTP 代理设置,因此您可以在防火墙后面或使用安全网络运行 Android Studio。要在 Android Studio 中设置 HTTP 代理设置,请执行以下操作:

  1. 在菜单栏中,依次点击 File > Settings(在 macOS 上,依次点击 Android Studio > Preferences)。
  2. 在左侧窗格中,依次点击 Appearance & Behavior > System Settings > HTTP Proxy。此时将显示 HTTP Proxy 页面。
  3. 选择 Auto-detect proxy settings 以使用自动代理配置网址来配置代理设置,或选择 Manual proxy configuration 以自行输入每一项设置。有关这些设置的详细说明,请参阅 HTTP 代理
  4. 点击 ApplyOK 以使更改生效。

Android Plugin for Gradle HTTP 代理设置

若从命令行或在未安装 Android Studio 的计算机上运行 Android 插件,则应在 Gradle 编译文件中设置 Android Plugin for Gradle 代理设置。

对于应用特定的 HTTP 代理设置,请根据各应用模块的要求在 build.gradle 文件中设置代理设置。

apply plugin: 'com.android.application'

    android {
        ...

        defaultConfig {
            ...
            systemProp.http.proxyHost=proxy.company.com
            systemProp.http.proxyPort=443
            systemProp.http.proxyUser=userid
            systemProp.http.proxyPassword=password
            systemProp.http.auth.ntlm.domain=domain
        }
        ...
    }
    

对于整个项目的 HTTP 代理设置,请在 gradle/gradle.properties 文件中设置代理设置。

# Project-wide Gradle settings.
    ...

    systemProp.http.proxyHost=proxy.company.com
    systemProp.http.proxyPort=443
    systemProp.http.proxyUser=username
    systemProp.http.proxyPassword=password
    systemProp.http.auth.ntlm.domain=domain

    systemProp.https.proxyHost=proxy.company.com
    systemProp.https.proxyPort=443
    systemProp.https.proxyUser=username
    systemProp.https.proxyPassword=password
    systemProp.https.auth.ntlm.domain=domain

    ...
    

如需了解如何使用 Gradle 属性进行代理设置,请参阅 Gradle 用户指南

在 Windows 上优化 Android Studio 性能

Windows 上的 Android Studio 性能可能会受多种因素的影响。本节将介绍如何优化 Android Studio 设置以在 Windows 上获得最佳性能。

最大限度地降低防病毒软件对编译速度的影响

某些防病毒软件会干扰 Android Studio 编译流程,从而导致编译运行速度明显变慢。当您在 Android Studio 中进行编译时,Gradle 会编译应用的资源和源代码,然后将编译后的资源打包在一个 APK 中。在此流程中,系统会在您的计算机上创建多个文件。如果您的防病毒软件启用了实时扫描,那么在防病毒程序扫描文件时,防病毒软件可以强制每次创建该文件时停止编译流程。

要避免此问题,您可以在防病毒软件中排除对某些目录的实时扫描。

以下列表显示了您应从实时扫描中排除的每个 Android Studio 目录的默认位置:

Gradle 缓存
%USERPROFILE%\.gradle
Android Studio 项目
%USERPROFILE%\AndroidStudioProjects
Android SDK
%USERPROFILE%\AppData\Local\Android\SDK
Android Studio 系统文件
C:\Program Files\Android\Android Studio\system

为组策略受控环境自定义目录位置

如果组策略会限制您可以从计算机中排除实时扫描的目录,您可以将 Android Studio 目录移至集中式组策略已排除的某个位置。

以下列表显示了如何自定义每个 Android Studio 目录的位置,其中 C:\WorkFolder 是您的组策略已排除的目录:

Gradle 缓存
GRADLE_USER_HOME 环境变量定义为指向 C:\WorkFolder\.gradle
Android Studio 项目
C:\WorkFolder 的相应子目录中移动或创建项目目录。例如,C:\WorkFolder\AndroidStudioProjects
Android SDK

请按以下步骤操作:

  1. 在 Android Studio 中,打开 Settings 对话框(在 macOS 上,打开 Preferences),然后依次转到 Appearance & Behavior > System Settings > Android SDK

  2. Android SDK Location 的值更改为 C:\WorkFolder\AndroidSDK

    为避免再次下载 SDK,请确保将默认位于 %USERPROFILE%\AppData\Local\Android\SDK 下的现有 SDK 目录复制到新位置。

Android Studio 系统文件

请按以下步骤操作:

  1. 在 Android Studio 中,依次点击 Help > Edit Custom Properties

    Android Studio 会提示您创建一个 idea.properties 文件(如果尚未创建)。

  2. 将以下行添加到 idea.properties 文件中:

        idea.system.path=c:/workfolder/studio/caches/trunk-system
        

配置离线编译依赖项

如果您想在没有网络连接的情况下编译项目,请按照以下步骤配置 IDE,以使用 Android Gradle 插件和 Google Maven 依赖项的离线版本。

如果您还没有这样做,请从下载页面下载离线组件

下载并解压缩离线组件

下载离线组件后,将其内容解压缩到以下目录中,如果该目录尚不存在,您可能需要创建该目录:

  • 在 Windows 上:%USER_HOME%/.android/manual-offline-m2/
  • 在 macOS 和 Linux 上:~/.android/manual-offline-m2/

要更新离线组件,请按以下步骤操作: 1. 删除 manual-offline-m2/ 目录中的内容。 1. 重新下载离线组件。 1. 将所下载的 ZIP 文件的内容解压缩到 manual-offline-m2/ 目录中。

在 Gradle 项目中添加离线组件

要告知 Android 编译系统使用您已下载并解压缩的离线组件,您需要创建一个脚本(如下所述)。请注意,即使在更新离线组件之后,您也只需创建并保存此脚本一次。

  1. 使用以下路径和文件名创建一个空文本文件:
    • 在 Windows 上:%USER_HOME%/.gradle/init.d/offline.gradle
    • 在 macOS 和 Linux 上:~/.gradle/init.d/offline.gradle
  2. 打开该文本文件并添加以下脚本:

    def reposDir = new File(System.properties['user.home'], ".android/manual-offline-m2")
        def repos = new ArrayList()
        reposDir.eachDir {repos.add(it) }
        repos.sort()
    
        allprojects {
          buildscript {
            repositories {
              for (repo in repos) {
                maven {
                  name = "injected_offline_${repo.name}"
                  url = repo.toURI().toURL()
                }
              }
            }
          }
          repositories {
            for (repo in repos) {
              maven {
                name = "injected_offline_${repo.name}"
                url = repo.toURI().toURL()
              }
            }
          }
        }
        
  3. 保存该文本文件。

  4. (可选)如果您想要验证离线组件是否运行正常,请从项目的 build.gradle 文件中移除在线代码库(如下所示)。在确认您的项目不使用这些代码库也能正确编译之后,您可以将它们放回到 build.gradle 文件中。

    buildscript {
            repositories {
                // Hide these repositories to test your build against
                // the offline components. You can include them again after
                // you've confirmed that your project builds ‘offline’.
                // google()
                // jcenter()
            }
            ...
        }
        allprojects {
            repositories {
                // google()
                // jcenter()
            }
            ...
        }