用eclipse 开发调试android程序时,一旦程序运行到断点,只要点debug窗口,就卡死5分钟以后,然后正常运行

用eclipse 开发调试android程序时,一旦程序运行到断点,只要点debug窗口,就卡死5分钟以后,然后正常运行,第1张

juno版可能会有各种问题,indigo未出现此问题,建议楼主下载google官方的sdk,最新版里面自带eclipse,将自己的卸载干净,还有配置文件什么的清干净后,用那个自带的eclipse一般不会有这种问题

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

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

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

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

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

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

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

让我们从gradle的生命周期开始。Gradle构建了一个被分成三个部分的项目(完成如下图,整个Gradle构建过程可以理解为10到8):

初始化阶段:主要是分析设置。Gradle文件(减少设置。所以有人提到了模块级的数量是合理的,但实际 *** 作过程的限制,因为最终可以粗略的说)

读取配置阶段:主要解析构建下的所有项目。Gradle文件,包括rootProject和其他子项目(组件),检查语法,确定任务依赖于创建任务必须没有循环图,任务文件目录中的引用存在,等等(这一步进一步验证也减少了设置。gradle中模块的数量可以加快编译速度,因为减少了一个模块,需要解析构建。gradle文件将会减少a,在步骤3中不会执行这属于模块的任务,但仍然说1个问题,限制了很多)

执行阶段:根据2所建立的,必须没有循环图来执行每一个任务,编译过程,这一步将会占用超过9个基本时间,特别是对于Android项目,一个Java的类。

CompileDebugJavaWithJavac / compileReleaseJavaWithJavac和类合并成敏捷

TransformClassesWithDexForDebug / transformClassesWithDexForRelease

这两个步骤是耗时的,第一步是可以的,第二步需要很长时间。在gradle.properties第一组。

Gradle。Jvmargs = -xmx4096m //越大越好,然后在构建的android节点下添加dexOptions配置。项目等级如下:

DexOptions {dexInProcess truepredexlibrary真正的javaMaxHeapSize增量true}“4g”//越大越好。

当您定义gradle的生命周期时,您可以看到加速编译的关键是从步骤3开始,并减少设置中模块的数量。让我们谈谈我们公司的做法吧。

项目插件改革,每个业务学生你只需要编译一个模块,这基本上就从根本上解决了编译慢的问题(我的大多数朋友没有插件规范可以看到下面的一些做法),第一个设置。该模块仅在gradle自己的开发模块中,而任务的对应阶段只是这个任务的一个模块。

执行gradle构建,我们会发现,在这个过程中,实际上是执行的任务多次包装,在buildTypes配置了多个编译包类型,默认的调试和发布,我们也可以手动配置其他类型,而且在productFlavor多渠道,编译这将执行多个包装、正常发育过程中,只需要把调试调试,所以使用gradle assembleDebug可以,等待释放使用其他方法来玩多渠道包(如美丽的计划,http://tech.meituan.com/mt-apk-packaging.html)。

因为编译器是主要集中在第三步的时间gradle生命周期执行任务,然后我们可以给残疾人一些不重要的任务,如各种各样的测试,各种线头等等,只有这样的指令gradle - x线头可以暂时禁止线头,禁止- x测试可以测试任务,事实上,对于一个略大的项目线头也是很耗费时间的,,当然,也可以通过gradle脚本完全禁用线头和测试任务,我也分享代码在一个小信集团,但不建议这样做,因为有时可能非常有用的棉絮和测试

Gradle本身可以加快编译的速度,提供一些指令参数,例如,守护进程,打开一个守护进程,——并行的、打开的并行编译等等,这也可以在Gradle中完成。propertites配置(使用JVM内存进行编译也可以在这里配置)。

定制级编译过程,使用官方API可以完全定制一个合适的编译过程,可以参考ctrip DynamicAPK/sub - project - build。在master CtripMobile/DynamicAPK lot中,有ctrip本身是一个完整的编译过程,脚本本身非常简单,总共只有两行代码。

如上所述,现有的环境可以通过这种方式进行(如果项目中存在交叉依赖,则使用一个特殊的注释,不要使用并行参数):

如果要直接安装在设备上,则可以用installDebug替换安装调试,并且可以缩写为asD,安装调试可以缩写为iD

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

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

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

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

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

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

手机系统软件闪退或者第三方软件闪退,可以查看以下几种原因:

一、清理后台程序;我们在使用完一个软件的时候,习惯性的返回到桌面,经常没有真正退出程序,而程序还在后台运行,当后台程序过多时,就可能导致闪退。

二、重启试试;如果遇到了APP闪退或打不开,可以尝试重启试试。

三、清除程序缓存;随着手机使道用时间的增长,程序的缓存会越来越多,这种情况下,会导致运行变慢且出现闪退的现象。可以进入设置专--更多设置--应用程序--全部,找到闪退或不可用的软件,清除缓存数据解决。

四、更新、重装软件;当App出现属闪退的时候,我们先看看这个应用是不是该更新了。如果没有新版本,我们可以尝试卸载该应用,然后重新安装。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12199519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存