Android Studio自从推出以来,网上就被很多人拿来推广。15年之前,还是beta版,关注的人不多。15年以后,说是成熟了。作为新东西,要抢Eclipse的市场,总得是要说出比Eclipse好在什么地方的。
在网上搜索一下,几乎都是这篇文章总结了9个优点:
1、Google推出的
2、速度更快
3、UI更漂亮
4、更加智能提示补全
5、整合了Gradle构建工具
6、强大的UI编辑器
7、内置终端
8、更完善的插件系统
9、完美整合版本控制系统
虽然9个优点并不算多,而且还值得商榷,但是这些文章无一例外的表现出了极大的优越感,似乎Eclipse被完全辗压,毫无还手之力。似乎用eclipse是很low的,而用Android Studio才是高大上。我深度用过Android Studio,发现一些问题,感觉写这个的人也许没有用过Android Studio。
Android Studio是基于Idea的社区版本开发的。Idea这东西,在Java领域是eclipse的手下败将。它的底子并不比eclipse好。
这9个优点里面,只有两个算得上是给力。
一是Google推出的
这是个金字招牌,Google在某种程度上已经代表了一种信仰。所谓“谷歌出品,必属精品“。但实际上谷歌出的废品也很多,成功的项目并不多。谷歌的搜索,地图,Gmail老本行做得不错。Android和Youtube是买来的。其它原创性的项目就几乎没有做好的。
而且谷歌出的新项目感觉大多是半成品,然后就当做正式版推出来。谷歌的审美一向很差,做出来的产品没几个漂亮的。Google在互联网领域有自己的特长,但是不必夸张到什么都能做,只要做能做好这种高度。
二是强大的UI编辑器
这个确实比Eclipse要好。但是做Android的UI,一般是手写xml代码,也就是说这个主要是用来预览的。但是ADT也是谷歌做的,ADT原来也可以做到这个,只是谷歌不做。
如果有人说,速度更快 是Android Studio比Eclipse的优点,那么他就是在扯淡。我在想为什么这么多人对自己没有用过的东西,能一本正经的胡说八道。这也加深了我对网上的一些言论的不信任。
事实上Android Studio的启动速度,响应速度,编译速度,几乎都比Eclipse慢。所以我们就在网上看到两种现象,一种是说Android Studio多么的快,一种是说它多么的慢。两种都有人说,真是奇哉怪也,那要信谁呢?说他快的人更信誓旦旦,而说他慢的人则是抱怨,还被人说他电脑不行,还得多费口舌和别人解释他电脑并不差。说慢的人,肯定是在同一台机器上运行Eclipse和Android Studio得出的结论,如果在这台不行的电脑上面,Eclipse快,Android Studio慢,在怪电脑的同时还能得出Studio快结论,那不是瞎扯淡是什么。
这些细节不重要,重要的是如此明确的事情,可以一本正经的颠倒黑白。让我有一种连人都敢杀,还怕杀猪的错觉。这种话都敢说,那还有什么不能说的。
UI漂亮更本不值一提,并且很多人觉得Idea很丑,而且Studio图标的辨识度比Eclipse要差得多,Eclipse一看就知道哪个是包,哪个是文件夹,哪个是java文件。Studio那些扁平的图标,就不好区分。PS:Eclipse也可以把编辑器调成黑背景,字调成绿色的。这不是studio的专利,这是任何一个IDE的基本功能。
其它几个优点Eclipse全部都有插件,装上就去有了。Eclipse以插件起家并且以此名扬天下,Studio竟然说他有更完善的插件系统。简直是令人笑掉大牙。
Studio装上就带一些插件,而Eclipse要自己安装,这点可以说不如Studio方便,但这只是小问题。Studio除了慢这个大问题外,也有很多小问题,并且对我来说还有致命问题。
一,Studio的智能提示补全并不好用
你打一些字母以后,看到想要的方法排在第一行,然后打回车。这个时候你发现上屏的不是自己看到的那个方法。这是因为你在打回车这段时间,他调整了那个提示的顺序,在宣传上还说他会智能的调整顺序,把你想要的放在前面。我最怕这种自以为是的智能。
二,Studio的文件组织方式不如Eclipse简单明了
Studio把简单的事情搞复杂了,而且Android源代码中app的组织方式是Eclipse的方式,在源码环境下更适合Eclipse。
把简单事情搞复杂,一向是学院派的专长,编程界深受其害。
三,Studio工程组织方式逻辑有问题
在Eclipse中,是一个Workspace,下面可以放多个Project,一个Project就是一个app。Workspace是工作区,一个容器的概念,容器也可以是空的,里面可以放一些app项目,放一些web项目,可以放一些文档项目,非常的自然。
但是在Studio中,是一个Project,下面对应多个Module,一个Module是一个app。Project这个概念是很奇怪的,我要做几个没什么关系的app,如果放在一个工程下面,每个app竟然叫做模块(Module)。而且在每个module的mainfest.xml中还不能单独设置use sdk,编译时会以Project的gradle设置为准。也就是说,Studio是认为一个工程只做一个app的。所以新建一个Project的时候,他自动给你建一个叫做app的module。这不如Eclipse方便和自然。
四、Studio查看日志不如ADT方便
ADT的Filter是一个列表,放在左边,点一下就行。Studio的Filter是一个下拉框,切换不如列表方便。
五,Studio没办法引用自定义的framework
这个问题是致命的。我搜遍全网,包括stackoverflow,虽然gradle明确表示不支持此功能,但还是找到有人说了几种处理办法,我尝试了所有他们提到的办法,没有一个成功。在Eclipse中如此简单明了的功能,被搞得复杂无比。没有办法引用自定义的framework,直接导致我不得不换回eclipse。
另外,我从studio2.2.2升及到2.2.3以后,好好的项目就变得没办法编译。在网上找到原因,是因为2.2.3升级了gradle,但是项目里面还是引用的旧版本,而且他自动把原来那个老版本的gradle给删除了。导致找不到gradle。他不自动处理项目的配置就算了,至少给个提示,或者不要删除老的gradle,但是他没有,一直在那里跑滚动条。后来发现是他在下载gradle,这七八十M的东西,国内访问国外网速慢可以说怪不得他。但问题是他自动下载的那个是gradle3.2。而studio2.2.3最低版本要搭配gradle3.3。如果等他下载完,他就会告诉你他需要gradle3.3,然后又开始下载3.3。就是这么任性。
ADT也出过类似的问题,记得升级某个版本以后,导致没办法创建Android项目。
谷歌出的东西,很难认为他们自己有测试过。这样的致命BUG是很难发现的吗?
我有理由相信做ADT的和做Android Studio的不是同一伙人。ADT承袭eclipse的思想,简单直观,是工程化的思路。而Studio承袭idea的思想,是学院化的思路。
Android是谷歌的,ADT和Studio也是谷歌的,谷歌为什么放弃发展ADT而去发展Studio。这不是技术原因,而是商业斗争。eclipse是基金会的,是一个开放的平台,而且衍生了像komodo这样的IDE,连flash项目都有插件。是一个平民化的好用的平台。谷歌不能掌控它,所以谷歌学微软取名搞了一个studio。虽然说studio的一些问题,可能后面谷歌会慢慢的优化和解决。但是这种斗争,极大的浪费了程序员的时间。
eclipse从2001年出来,经过这么多年发展,用户远超netbeans和idea,是有他的长处的。
为android studio摇旗呐喊,是不明智的。