1.2 配置高效的开发环境
俗话说,“工欲善其事,必先利其器”,高效的开发环境可以提高开发者的工作效率,更能让开发者集中注意力在代码本身。
众所周知,使用Android Studio作为开发首选IDE,不仅是Google建议的做法,更是绝大部分开发者的选择。通过本节的学习,读者将掌握如何配置,从而使Android Studio运行得更加流畅,使用起来更加方便。
需要提前说明的是,本书中所使用的JDK(Java Development Kit)版本为8.x,Android Studio版本为3.5.x,其他版本的读者可适当参考。由于Android Studio本身跨平台的特性,因此对操作系统没有过多的要求,本书采用macOS 10.15.x。
1.2.1 Android Studio轻装上阵
1.给Android Studio减负
相信很多读者在安装完Android Studio后就迫不及待地开始工作了。别急,默认情况下,Android Studio将加载所有已安装的插件,但这些插件中有一些我们根本用不到。因此,建议各位读者关闭这些插件,给你的Android Studio减负。
启动Android Studio,依次单击Configure → Plugins,如图1.2所示。
图1.2 Android Studio启动界面
观察如图1.3所示的插件设置窗口,不难发现,总共有36个插件,并且已经全部开启。
图1.3 插件设置窗口
哪些插件是可以关闭的呢?请读者参考表1.1。
表1.1 可关闭的插件列表
表1.1中列举的14个插件均可以关闭,数量上占了默认情况下的一少半。关闭它们不会影响正常的App编译、运行等。当然,正如表1.1中描述的那样,在关闭指定的插件时,需要考虑具体的需求。比如,当我们需要与他人协同开发,并使用Git版本控制系统且没有其他的版本控制软件可供使用时,Git Integration插件就不能关闭。
2.让Use androidx.* artifacts选项可选
接下来,我们试试创建一个全新的工程。不难发现,在创建新的Android工程时,Use androidx.* artifacts选项可能会被选中,而且无法取消勾选。
相信熟悉Android App开发的朋友都知道Android X,这里就不再赘述了。出现强制要求使用Android X的原因是你很可能下载了Android 10(Q)的SDK。因此,破解之法也很简单,只要在SDK Manager中取消Android 10(Q)的SDK即可恢复可选状态,如图1.4所示。
图1.4 移除Android 10版本SDK
此后再尝试创建新工程,Use androidx.* artifacts选项将变为可选状态,也不会有任何Android X的库依赖。
1.2.2 Android Studio内存优化
用过虚拟机的读者都知道,在配置虚拟机时,需要给定每个虚拟机的可用内存,这个内存提供给虚拟机使用。也就是说,虚拟机将使用这部分内存作为客户机的实际内存。如果这个值过大,就可能会影响宿主机的性能;如果这个值过小,就会影响虚拟机的性能。这对Android Studio而言是类似的,如果你的计算机配备了8GB甚至16GB的内存,就可以让Android Studio使用更多的内存以得到更好的性能表现。
我们先来看看默认情况下的配置情况,在macOS中,使用Finder(访达)打开“应用程序”文件夹。找到Android Studio,然后双指按下触控板或右击鼠标,在弹出的菜单中选择“显示包内容”,接着依次打开Contents、bin文件夹,找到studio.vmoptions文件,使用任意文本编辑器打开它。
类似地,在Windows操作系统中,打开Android Studio的安装目录,找到studio.exe.vmoptions和studio64.exe.vmoptions。这两个配置文件分别对应32位和64位的运行环境。如果你的操作系统是64位,并且使用的是64位的Android Studio,就需要对studio64.exe.vmoptions文件进行操作,图1.5展示了该文件的内容。
图1.5 使用Visual Studio Code编辑studio.vmoptions
上述参数配置中,有几个值需要我们进行修改,这里已配备了8GB内存的MacBook为例,配备了更多内存的读者请按比例自行计算配置值。
· Xms256m:该参数定义了Java虚拟机初始分配的堆内存大小,仅仅256MB显然太小了,建议将其修改为1024MB。
· Xmx1280m:该参数定义了Java虚拟机最大允许分配的堆内存大小,1280MB也不算大,建议将其修改为2048MB。
· XX:ReservedCodeCacheSize:该参数定义了预留代码的缓存大小,仅仅240MB依然太小了,建议将其修改为1024MB。
实际上,对于小型Android工程而言,默认的配置已经可以满足高性能的编译要求,无须进行更多配置。但是,对于大型Android工程而言,在编译过程中,可能会由于内存不足导致频繁GC,最终会影响编译性能。
另外,对于以上参数值的配置,切勿盲目地走极端,不合适的参数值可能会导致Android Studio彻底无法启动。
1.2.3 加速Android SDK下载/更新
目前,使用Android Studio自带的SDK Manager已经可以正常下载和更新SDK了。如果读者遇到SDK无法正常下载和更新的情况,那么可尝试将用于下载和更新的HTTPS请求改为HTTP,或许就可以正常下载和更新了。如图1.6所示,勾选矩形框中的复选框即可。
图1.6 强制使用HTTP方式下载和更新
1.2.4 加速依赖库下载
在实际开发中,一个Android工程可能会引入多个依赖库,这些依赖库必须下载才能正常进行项目编译和运行。但由于依赖仓库连接偶尔不稳定,有可能导致依赖库无法获取。幸运的是,国内的一些机构提供了maven镜像站服务,便于开发者顺利地获取依赖库。笔者以阿里云提供的仓库服务为例进行实例讲解。
在/Users/[当前登录用户名]/.gradle目录中创建init.gradle文件,输入以下内容并保存:
再次Sync时,从后台任务窗口可以看到,获取库的位置已经改为阿里云镜像站,如图1.7所示。
图1.7 从阿里云镜像站获取依赖库
此外,如果读者不想使用阿里云提供的服务,就可以在工程根目录下的build.gradle文件中指明不采用HTTPS方式获取依赖库,这样做对于处理某些异常情况同样奏效,如图1.8所示。
图1.8 以HTTP方式获取依赖库
1.2.5 加速Gradle编译速度
SDK和依赖库都搞定了,终于可以高枕无忧了吗?还没有。
我们都知道,Gradle在整个Android App编译、打包等过程中都扮演重要角色,我们对它也需要进行优化,才能让它更高效地为我们服务。
1.使用本地Gradle
通常情况下,对于默认新建的Android工程,Gradle的地址都指向一个网络地址。大多数情况下可以下载,对于同样版本的Gradle,也不会出现重复等待下载的问题。但是一旦网络不稳定,且需要下载时,就会遇到麻烦,经常会在Building xxx gradle project info处花很久的时间。要解决这个问题,我们要“帮”Android Studio把对应版本的gradle下载到本地。
打开工程根目录下的gradle-wrapper.properties文件,distributionUrl定义了Gradle的位置。同时,也暴露了所需Gradle的版本信息,如图1.9所示。
图1.9 Gradle地址定义和版本信息
由图1.9可以看出,所需Gradle版本为5.4.1。Gradle的所有版本都可以在Gradle官网找到,如图1.10所示。
图1.10 从官网下载Gradle
找到工程所需的gradle-5.4.1-all.zip,单击下载它。下载成功后,将其移动到/Users/当前登录的用户名/.gradle/wrapper/dists/gradle-5.4.1-all/xxxxxxxx/目录中,如图1.11所示。
图1.11 由Android Studio自动配置
再次运行Android Studio时,会自动解压这个文件,完成Gradle的下载。
2.优化Gradle编译参数
和Android Studio运行参数类似,Gradle也配置了默认的编译参数。位于工程根目录下的gradle.properties保存了这些参数,我们可以使用工程中的文件作为模板,创建全局生效的gradle.properties文件,从而获得更高的构建速度。
我们也可以在/Users/当前登录的用户名/.gradle/目录下创建gradle.properties文件,该文件将影响所有工程。
如图1.12所示,默认情况下,某个工程的gradle.properties文件只包含3个有用参数。
图1.12 默认的gradle.properties配置
在这3个参数中,重点关注org.gradle.jvmargs。它定义了gradle构建时的内存用量范围。和前文中所提及的Android Studio配置相似,这里仍以配备了8GB内存的MacBook为例,建议采用如下参数值:
这里给Gradle分配了最大允许的非堆内存(大小为2GB)以及最大允许的堆内存(大小为4GB)用于构建。对于配备了更多或更少内存的设备,需要按比例调整。
对于Android Studio的性能优化配置到此结束,但对其的整体优化还未完成,比如默认的配色主题、代码字体、工具栏位置、提升开发效率的插件等。限于本书的篇幅和侧重点,上述配置不再进行详细说明,感兴趣的读者可自行安装喜欢的插件。