导航:首页 > 源码编译 > 加快安卓系统编译速度

加快安卓系统编译速度

发布时间:2022-05-06 01:20:07

⑴ 如何加快android Studio 编译app 的速度

以下几个方法可以提高Android Studio的编译速度:
使用Gradle 2.4。
Gradle 2.4对执行性能有很大的优化,要手动让Android Studio使用Gradle 2.4,在项目根目录下的 build.grade中加入。

打开终端执行 ./gradlew wrapper,就可以下载Gradle 2.4了,下载完成后,需要在Android Studio让我们的项目使用Gradle 2.4。

使用多线程编译
在项目根目录中创建gradle.properties,加入以下配置。
打开dex增量编译
在项目主Mole下build.grade的Android中加入。

⑵ 如何解决android studio运行编译速度慢

方法很多:
暴力:
换电脑,高配置,撸起。
温和:
修改xmx配置参数http://blog.csdn.net/xyxjn/article/details/46906909
减少不必要的内存消耗,加快编译速度。
灵活:
使用第三方插件进行快速编译 ,例如阿里集团的 freeline这种编译插件。

⑶ 如何加快linux android 的编译速度

项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情。Research了一下,找到以下可以帮助提高速度的方法,总结一下。
1. 使用tmpfs来代替部分IO读写
2.ccache,可以将ccache的缓存文件设置在tmpfs上,但是这样的话,每次开机后,ccache的缓存文件会丢失
3.distcc,多机器编译
4.将屏幕输出打印到内存文件或者/dev/null中,避免终端设备(慢速设备)拖慢速度。

tmpfs
有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。
这个做法的实现成本最低,在Linux中,直接mount一个tmpfs就可以了。而且对所编译的工程没有任何要求,也不用改动编译环境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel来测试一下编译速度:
用物理磁盘:40分16秒
用tmpfs:39分56秒
呃……没什么变化。看来编译慢很大程度上瓶颈并不在IO上面。但对于一个实际项目来说,编译过程中可能还会有打包等IO密集的操作,所以只要可能,用tmpfs是有益无害的。当然对于大项目来说,你需要有足够的内存才能负担得起这个tmpfs的开销。
make -j
既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
还是用Kernel来测试:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一个编译器驱动器。第一趟编译时ccache缓存了GCC的“-E”输出、编译选项以及.o文件到$HOME/.ccache。第二次编译时尽量利用缓存,必要时更新缓存。所以即使"make clean; make"也能从中获得好处。ccache是经过仔细编写的,确保了与直接使用GCC获得完全相同的输出。

ccache用于把编译的中间结果进行缓存,以便在再次编译的时候可以节省时间。这对于玩Kernel来说实在是再好不过了,因为经常需要修改一些Kernel的代码,然后再重新编译,而这两次编译大部分东西可能都没有发生变化。对于平时开发项目来说,也是一样。为什么不是直接用make所支持的增量编译呢?还是因为现实中,因为Makefile的不规范,很可能这种“聪明”的方案根本不能正常工作,只有每次make clean再make才行。
安装完ccache后,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,链到/usr/bin/ccache上。总之确认系统在调用gcc等命令时会调用到ccache就可以了(通常情况下/usr/local /bin会在PATH中排在/usr/bin前面)。
安装的另外一种方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路径加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
这样每次启动g++的时候都会启动/usr/lib/ccache/bin/g++,而不会启动/usr/bin/g++
效果跟使用命令行ccache g++效果一样
这样每次用户登录时,使用g++编译器时会自动启动ccache
继续测试:
用ccache的第一次编译(make -j4):23分38秒
用ccache的第二次编译(make -j4):8分48秒
用ccache的第三次编译(修改若干配置,make -j4):23分48秒

看来修改配置(我改了CPU类型...)对ccache的影响是很大的,因为基本头文件发生变化后,就导致所有缓存数据都无效了,必须重头来做。但如果只是修改一些.c文件的代码,ccache的效果还是相当明显的。而且使用ccache对项目没有特别的依赖,布署成本很低,这在日常工作中很实用。
可以用ccache -s来查看cache的使用和命中情况:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,显然只有第二编次译时cache命中了,cache miss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,还是完全可以接受的。
distcc
一台机器的能力有限,可以联合多台电脑一起来编译。这在公司的日常开发中也是可行的,因为可能每个开发人员都有自己的开发编译环境,它们的编译器版本一般是一致的,公司的网络也通常具有较好的性能。这时就是distcc大显身手的时候了。
使用distcc,并不像想象中那样要求每台电脑都具有完全一致的环境,它只要求源代码可以用make -j并行编译,并且参与分布式编译的电脑系统中具有相同的编译器。因为它的原理只是把预处理好的源文件分发到多台计算机上,预处理、编译后的目标文件的链接和其它除编译以外的工作仍然是在发起编译的主控电脑上完成,所以只要求发起编译的那台机器具备一套完整的编译环境就可以了。
distcc安装后,可以启动一下它的服务:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默认的3632端口允许来自同一个网络的distcc连接。
然后设置一下DISTCC_HOSTS环境变量,设置可以参与编译的机器列表。通常localhost也参与编译,但如果可以参与编译的机器很多,则可以把localhost从这个列表中去掉,这样本机就完全只是进行预处理、分发和链接了,编译都在别的机器上完成。因为机器很多时,localhost的处理负担很重,所以它就不再“兼职”编译了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然后与ccache类似把g++,gcc等常用的命令链接到/usr/bin/distcc上就可以了。
在make的时候,也必须用-j参数,一般是参数可以用所有参用编译的计算机CPU内核总数的两倍做为并行的任务数。
同样测试一下:
一台双核计算机,make -j4:23分16秒
两台双核计算机,make -j4:16分40秒
两台双核计算机,make -j8:15分49秒
跟最开始用一台双核时的23分钟相比,还是快了不少的。如果有更多的计算机加入,也可以得到更好的效果。
在编译过程中可以用distccmon-text来查看编译任务的分配情况。distcc也可以与ccache同时使用,通过设置一个环境变量就可以做到,非常方便。
总结一下:
tmpfs: 解决IO瓶颈,充分利用本机内存资源
make -j: 充分利用本机计算资源
distcc: 利用多台计算机资源
ccache: 减少重复编译相同代码的时间
这些工具的好处都在于布署的成本相对较低,综合利用这些工具,就可以轻轻松松的节省相当可观的时间。上面介绍的都是这些工具最基本的用法,更多的用法可以参考它们各自的man page。
5.还有提速方法是把屏幕输出重定向到内存文件或/dev/null,因对终端设备(慢速设备)的阻塞写操作也会拖慢速度。推荐内存文件,这样发生错误时,能够查看。

⑷ 有什么办法能加快Android Studio中Gradle build速度

有2种方法。

1、使用第三方编译插件,例如freeline这种插件,阿里的,加快编译。

2、最大化graldle 编译内存,如下图

⑸ 如何优化安卓系统,加快启动速度

系统启动过程中,会扫描系统指定目录下的所有apk文件,这个过程也是非常耗时的,预装的apk文件越少,系统启动速度也就越快,因此,精简预装apk也是优化系统启动速度最重要的手段之一。

要想减少预装的apk文件,则需要分析系统的build文件,将不需要的apk编译选项删除掉

⑹ Android Studio编译慢,卡死和狂占内存怎么破

已经使用AndroidStudio进行开发超过一年,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这里跟大家分享一下。开启gradle单独的守护进程在下面的目录下面创建gradle.properties文件:/home//.gradle/(Linux)/Users//.gradle/(Mac)C:\Users\\.gradle(Windows)并在文件中增加:org.gradle.daemon=true同时修改项目下的gradle.properties文件也可以优化:#Project-wideGradlesettings.#IDE(e.g.AndroidStudio)users:##configuredthroughtheIDE.###sec:configuration_on_demandorg.gradle.configureondemand=true同时上面的这些参数也可以配置到前面的用户目录下的gradle.properties文件里,那样就不是针对一个项目生效,而是针对所有项目生效。上面的配置文件主要就是做,增大gradle运行的java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以平行的运行。修改androidstudio配置在androidstudio的配置中,开启offline模式,以及修改配置。实际上的配置和上面的一大段一样,主要是在这个地方配置的只会在ide构建的时候生效,命令行构建不会生效。命令行构建基于上面的配置,命令行构建时在命令后面加上这个参数即可--daemon--parallel--offline。引入依赖库时使用aar使用网上第三方的依赖库时尽量使用aar,可以在maven/android/2015/03/01/android-reference-local-aar/。

⑺ 安卓系统怎么加速

随着使用手机的时间越长,安卓手机的运行速度越来越慢,而内存大小直接影响运行速度,手机运行速度慢,一般很有可能因为内存吃紧了,所以要养成良好的手机使用习惯,及时清理内存,禁止自启动应用,删除残留垃圾,才能发挥手机最大性能。

1、在“开发者选项”中将三个“动画选项”设置成0.5x
“窗口动画缩放”、“过渡动画缩放”和“动画程序时长调整”等三个动画选项能让操作界面更有动感,但是它们占据着很大的资源。在安卓系统的开发者选项中,将这三个动画选项设置为0.5x,将能节省大量的系统资源,对于缓解手机迟钝、提升系统流畅度有很大作用。

2、把默认运行环境Delvik修改为ART
安卓系统一般的默认运行环境为Delvik,不过自从安卓4.4增加了ART运行环境之后,安卓系统的流畅度也大为提升。资料显示,Delvik环境下开启应用需要执行编译+运行,因此速度比较慢;而ART环境则在应用安装的时候就已经编译好了,开启即可运行,因此速度比较快。简单点说,Delvik就是一辆折叠好的自行车,每次使用都需要组装,而ART就是一辆已经组装好的自行车,每次都可直接使用。当然,要把默认运行环境从Delvik修改为ART,你的系统必须升级到4.4。

3、利用“PP大扫除”提升系统流畅度
除了以上两种方法,通过PP助手安卓版的PP大扫除功能也能提升系统流畅度。用户只需在PP助手安卓版底部功能栏的“更多”中找到“PP大扫除”,点击就能享受一键扫描和清除垃圾文件的服务,有效帮助安卓系统“瘦身”,大幅提高系统流畅度。

⑻ 如何优化 Android Studio 启动,编译和运行速度

优化 Android Studio 启动、编译和运行速度?
【阿里云】携手码云为社区用户送福利,全网专享,详情请点击>>> »
作为一名 Android 程序员,选择一个好的 IDE 工具可以使开发变得非常高效,很多程序员喜欢使用 Google 的 Android Studio来进行开发,但使用起来有时会出现卡顿等问题。本文介绍了几种优化 Android Studio 启动、编译、运行速度的方法。
首先解决一个 Android Studio 启动报错的问题
1、进入刚安装的 Android Studio 目录下的bin目录。找到 idea.properties 文件,用文本编辑器打开。
2、在 idea.properties 文件末尾添加一行:disable.android.first.run=true,然后保存文件。
3、关闭 Android Studio 后重新启动,便可进入界面。
优化 Android Studio 启动速度
1、开启 gradle 单独的守护进程
当 Android Studio 遇到错误的时候,往往会导致 Android Studio 挂掉,为了防止推出程序,则另外开启一个线程来守护 Android Studio 的进程,具体操作。 在 C:\Users\.gradle 这个目录下,创建 gradle.properties 配置文件,复制以下配置进行优化。
# Project-wide Gradle settings.
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m
-XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

这些配置文件主要就是增大 gradle 运行的 java 虚拟机的大小,让 gradle 在编译的时候使用独立进程,让 gradle 可以很好的运行。
2、扩大内存
64位:\studio64.exe.vmoptions or studio.exe.vmoptions
32位:\studio.exe.vmoptions or studio.exe.vmoptions
编辑这个文件,在最开始的两行设置内存大小,类似于eclipse.ini中的配置。配置如下:
-Xms256m
-Xmx1024m

⑼ Android Studio编译慢、卡死和狂占内存怎么破

在2020年,仍然使用2g内存的电脑,你可以改变职业。没有合适的设备,什么都没用。Android Studio是内存,设备烂卡死不可避免,要解决卡的问题,一定要升级硬件设备。另一些人则说,对修辞学的回答相当有力,在一定程度上,加快编译的速度,却不能解决卡死的问题,没有人能解释为什么会加快编译的速度。

至于加快编译,有一种方法,我认为一些主要适用性的答案并不强,实际上应该从gradle开始,什么不是正确的地方,也请轻喷,有什么问题可以留个信息。

我谈到了下面的所有步骤,建议在最后进行。在终端编译中有很多好处:

能观察整个编译过程,帮助理解层次构建过程;

可以看出哪些任务在编译过程中耗费时间,可以较慢地编写出适合的补救方案;

可以终止编译,如果在某个阶段被卡住,CTRL + c终止编译,Android也会终止在Studio中编译,但基本上九次会失败;

因为它最终会对Android Studio产生影响,基本不会导致Android Studio caton;不满足Android工作室的各种bug ?

最后,为什么要减少设置中模块的数量。Gradle实际上可以加速编译,但是有很多限制?

首先,我们认为编译过程,首先解析gradle配置,设置任务依赖于有向图,然后执行每个任务的模块,如果我们通过maven的依赖关系,使用模块的aar(单android库),如果我们想要改变文件在这个模块,不要再次修改上传下载,每次都是很好,但是有一个致命的问题:不修改版本号,快照通常不是做的想法。这可能导致一些不会生效的变化,并且需要时间来解决这个问题。但是,有一种方法可以在一定程度上解决这个问题,并添加以下脚本:

项目。配置。所有(新操作<配置> ({@ Overridevoidexecute(配置文件){文件)。ResolutionStrategy。TimeUnit CacheDynamicVersionsFor(5。分钟)

文件。ResolutionStrategy。TimeUnit CacheChangingMolesFor(0。秒)} })

有人会问,插件,每个人都要开发一个模块,对于每个模块的维护都要打包到maven,每次我修改,甚至很小的改动,也要做一个上传,就会遇到快照不做同样的问题。嘿,嘿,这个问题,我们公司有一个等级插件,已经解决了,至于解决方案,是公司机密,我不会说。

一件事,我相信大多数开发人员共同发展是单一模块,该模块的情况并不多,所以最基本的也是依赖aar或罐子里,并不存在所谓的图书馆aar上传,所以一些答案的耶和华说并不意味着什么,这就是为什么我说影响编译速度的情况主要集中在它的生命周期的第三阶段,第三阶段的优化,看到我的答案。

阅读全文

与加快安卓系统编译速度相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:579
python员工信息登记表 浏览:377
高中美术pdf 浏览:161
java实现排列 浏览:513
javavector的用法 浏览:982
osi实现加密的三层 浏览:233
大众宝来原厂中控如何安装app 浏览:916
linux内核根文件系统 浏览:243
3d的命令面板不见了 浏览:526
武汉理工大学服务器ip地址 浏览:149
亚马逊云服务器登录 浏览:525
安卓手机如何进行文件处理 浏览:71
mysql执行系统命令 浏览:930
php支持curlhttps 浏览:143
新预算法责任 浏览:444
服务器如何处理5万人同时在线 浏览:251
哈夫曼编码数据压缩 浏览:426
锁定服务器是什么意思 浏览:385
场景检测算法 浏览:617
解压手机软件触屏 浏览:350