IntelliJ IDEA —— Android开发的另一个选择

很早就听过Eclipse的大名,但在我初学Java的时候,一位前辈推荐的IDE却是IntelliJ IDEA。因为之前用过JetBrains的另一款产品PyCharm(一个很给力的Python IDE),所以用上去很顺手,很是喜欢。之后在单位的项目中,需要做一个Android的小应用,也用过一段时间的Eclipse。

在咱们eoe社区,坛友们似乎都偏爱使用Eclipse做Android开发,所以今儿就给大家介绍另一种很好的选择,IntelliJ IDEA(以下简称IDEA)。

首先说明一下,我是个JetBrains的粉丝,喜欢IDEA而不习惯Eclipse。下面的介绍只是给朋友们推荐一个新的选择,而不是说要替换掉Eclipse。
当然啦,有说得不对的地方,希望大家多多指出。

关于IDEA

IDEA包含一个免费的Community版本和一个收费的Ultimate版本,都可以在Jetbrains的官网下到。U版对JavaEE开发比C版好得多。但对于咱们做Android开发的朋友们来说,C版足够了。
IDEA使用Java开发而成,和Eclipse一样,支持Windows、Linux和Mac OS X。其中,C版是开源的。
Eclipse需要ADT插件以支持Android开发。而IDEA对Android开发的支持是内置的,不再需要其他插件。当然,Android SDK和JDK还是不可缺少的。

IDEA的各种优势
自动保存

和PyCharm一样,在IDEA中编辑代码,不再需要CtrlS。代码一经修改,自动保存。
当然,不需要担心CtrlZ的问题————只要不关闭IDEA,撤销是没问题的。

内置版本控制

IDEA内置了Git、Svn、CVS和Mercual的支持

强大的智能提示

Eclipse的智能提示只有在完整输入类名或者变量名,再按下点号之后才有。而IDEA的自动提示,则是全程的:

快捷的代码生成器
点击左边的灯泡,或者按Control+Enter可以看到IDEA给出的智能提示

按Option+Enter可以看到IDEA给出的生成代码菜单

完美的Xml资源支持

IDEA能够识别Android资源文件中的符号,并给出智能提示,这在编辑layout和drawable文件时真是太有用了。

Eclipse的ADT在这个功能上的缺失,真能让人抓狂。

与Eclipse的兼容性
也许你被IDEA所吸引,可是团队里其他人都是玩儿Eclipse的,咋办?
这个木有关系,IDEA提供了从Eclipse导入导出项目的完美支持:

从Eclipse导入:
1、New Project,选择Import project from extenal model,一直下一步直到完成

2、在Event Log中能看到"Frameworks detected: Android framework is detected in the project Configure",点Configure配置Android框架即可。
File菜单中还有还有Export to Eclipse这一功能。

劣势
当然,从来没有完美的IDE,IDEA也是。
由于IDEA的开发语言是Java,造成了它的高内存占用(在我的本子上不一会儿200+的内存就吃掉了)和较慢的启动速度。

相关链接

IntelliJ IDEA下载页面

IntelliJ IDEA的一些特性

解读IntelliJ IDEA的优缺点

IntelliJ IDEA中文爱好者博客

 

IntelliJ IDEA —— Android开发的另一个选择的更多相关文章

  1. Android开发技巧——写一个StepView

    在我们的应用开发中,有些业务流程会涉及到多个步骤,或者是多个状态的转化,因此,会需要有相关的设计来展示该业务流程.比如<停车王>应用里的添加车牌的步骤. 通常,我们会把这类控件称为&quo ...

  2. Android开发之模拟器的选择

    在做Android app开发的时候由于机器配置不是特别高,而Android自带的模拟器非常耗资源,性能极其差.所以常常由于模拟器性能差而抓狂,相信不少开发者都会面临和我一样的问题.于是换了一台平常很 ...

  3. 从零开始学android开发-创建第一个android项目

    打开ADT开发工具

  4. Android开发学习笔记--一个有界面A+B的计算器

    做了一个A+B的APP,虽然很简单,但是作为初学者还是弄了几个小时才弄好,什么东西都要看书或者百度,但最后成功了,还是很开心的,收货蛮大的.现在把过程写一下: 首先给出效果图: 一开始布局一直有问题, ...

  5. Android开发必备:颜色选择

      AA 指定透明度. 00 是完全透明. FF 是完全不透明.超出取值范围的值将被恢复为默认值.    ffff00 ffff33 ffff66 ffff99 ffffcc ffffff ffcc0 ...

  6. 【我的Android进阶之旅】快速创建和根据不同的版本类型(Dev、Beta、Release)发布Android 开发库到Maven私服

    前言 由于项目越来越多,有很多公共的代码都可以抽取出一个开发库出来传到公司搭建好的Maven私服,以供大家使用. 之前搭建的Maven仓库只有Release和Snapshot两个仓库,最近由于开发库有 ...

  7. Windows系统下Android开发环境搭建

    “工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.ecl ...

  8. Android开发之广播

    广播是Android开发中的一个重要的功能,在Android里面有各式各样的广播,比如:电池的状态变化.信号的强弱状态.电话的接听和短信的接收等等,现在给大家简单介绍一下系统发送.监听这些广播的机制. ...

  9. 8个常用的Android开发工具

    周末发现一些比较有用的android开发常用的工具,里面大部分是自己经常用的,还有一些暂时很少用,暂且在这里记录下,以后一定同样会经常用到的. 1 The SDK and AVD Manager 这个 ...

随机推荐

  1. 【微信公众平台开发】百度周边搜索接口php封装

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl2YW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  2. 刷牙LeetCode思考

    时间已经到了不自觉地,3在五月中旬.今天正式LeetCode自由181刷牙的问题.感觉,以提高他们的算法非常有帮助. 第一个主要的深搜索,广泛搜索,DP他已经掌握7788.也有自己写的代码格公式,使用 ...

  3. Android与server通信中的方法(TCP)高效的安全完整

    我以前一直使用sockets实现emulator和PC进行通讯,卡了几天,最后请教其它人最终能够连接了.  错误原因是在IP和port,IP要用本机IP(在CMD输入ipconfig.注意:每次开机本 ...

  4. SQL Server 内存泄露(memory leak)——游标导致的内存问题

    原文:SQL Server 内存泄露(memory leak)--游标导致的内存问题 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/07/01/sql ...

  5. Freemarker详细解释

    A概念 最经常使用的概念 1. scalars:存储单值 字符串:简单文本由单或双引號括起来. 数字:直接使用数值. 日期:通常从数据模型获得 布尔值:true或false,通常在<#if -& ...

  6. 全栈JavaScript路(八)得知 CDATASection 种类 节点

    CDATASection 只船舶类型节点 基于XML 文件.演出CDATA 数据. 构造函数: CDATASection function(){[native code]} CDATASection ...

  7. JAVA多线程两个实用的辅助类(CountDownLatch和AtomicBoolean)

    AtomicBoolean它允许一个线程等待一个线程完成任务,然后运行: A boolean value that may be updated atomically. See the java.ut ...

  8. UIViewAdditions(一个非常方便的工具类用它)

    我们在project在,改变或多或少控件的坐标-宽度-高度,然后,经常看到你的self.view.frame.origin.x,self.view.frame.size.width.........相 ...

  9. linux 文件系统解析及相关命令(转)

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

  10. JavaScript 实现Map效果

    var map = {}; // 类似:Map map = new HashMap(); map[key] = value; // 类似:map.put(key, value); var value ...