详解Eclipse转Android Studio

AS出来一年多了,最近才从Eclipse转到AS,但我并不觉得使用Eclipse有多落后,它们都只是一个工具而已,哪个顺手就用哪个,用得好都能提高生产力,不会合理利用,再好的工具也是惘然。很多使用Eclipse的Android程序员不知道代码重构的快捷键、如何在运行时调试、一个Workspace一大堆工程......,我想即使转到Android Studio也并不见得比Eclipse顺手。

下面将自己在Eclipse转AS过程中遇到的一些问题以及对各个问题的理解列出来,方便后续查阅。

1、问:Eclipse的工程如何导入到AS?

答:我的处理方式是在AS中新建工程,然后将Eclipse中对应工程的文件拷贝过来;当然也可以通过Eclipse将project导成gradle版本的,然后在AS中导入该工程。

2、问:对于本地代码,是如何处理的,在AS上如何编译JNI的代码?

答:AS上同样可以开发JNI,只不过配置脚本的过程比较麻烦,各个gradle版本,配置的方式有些不一样;我的处理方式是AS上只做java开发,JNI还是在Eclipse中开发,方便编译和调试;

3、问:在AS上开发会和Eclipse一样,卡吗?

答:会,卡不卡和你整个工作空间的复杂度有关,如果Eclipse的一个工作空间工程比较少,是不会卡的;AS也一样,如果AS的一个工作空间有太多工程,同样会很卡,特别是编译的时候;

4、问:AS存在启动慢的问题吗,有没有Eclipse那种初始化进度一直在0%的状态?

答:目前为止我还没有遇到过,即使一个工作空间有上十个工程。

5、问:AS编译比Eclipse或者ant编译快吗?

答:不一定,这也跟你项目的复杂度有关,如果你的工程依赖关系简单,用gradle编译会很快,当然用Eclipse和ant编译也一样;如果你的工程依赖关系复杂,用gradle编译比用Eclipse、ant还慢。我的建议是:主工程不要依赖太多的libproject,否则会编译很慢,可以把这些libproject打包成aar,这样同样复杂的项目用gradle编译会比用Eclipse和ant编译块不少;

6、gradle与ant相比,有什么优点?

答:优点比较多,主要的优点是配置简单,特别是在持续集成的时候,如果是gradle,一条命令就行了,如果是ant,还得自己写编译脚本。

7、问:AS中如何配置工程的依赖关系?

答:在Eclipse中,会存在几种依赖:

一种是jar包,直接放在libs文件夹即可(早先的Eclipse版本需要设置buildpath依赖关系才算配置OK);

另外一种是libproject,这需要右键主工程—properties—Android—点击Add添加依赖项,配置完成后依赖关系会更新到工程根目录下的“project.properties”文件。

在AS中会很简单,右键主工程—Open Module Setting — 选中某一个工程,点击右边的Dependencies选项,点击“+”,分别添加Library/File/Module dependency,Library dependency和File dependency主要是添加jar包(File dependency的jar包是放在工程的libs文件夹下),Module dependency是添加libproject,so放在工程的"libs/架构文件夹"下,不需要配置依赖关系。AS的依赖关系配置完成后,可以在工程的"build.gradle"文件中查看。依赖关系配置完成后,记得在build.gralde文件的android标签下增加下面这句话,依赖关系才生效:

sourceSets{main{jniLibs.srcDirs=['libs']}}

8、问:Eclipse和AS中主工程对其它工程的依赖有什么异同?

答:

相同点:Eclipse和AS都可以依赖so、jar包和libproject;组织结构也一样,so和jar包放在libs文件夹,libproject是一个独立的工程,需要手动配置依赖关系。

不同点:AS还可以依赖aar,并且AS除了可以依赖本地的库,还可以依赖服务器上的库,但Eclipse只能依赖本地库。

9、问:jar包和aar有啥区别?

答:jar包不能将so和资源文件打包进去,但aar可以,看得到的就是这点区别。

10、问:有哪些功能在Eclipse中用的特别顺手,但在AS中用得不顺手的?

答:

在同一个类中用快捷键查找同一个字串(Eclipse的快捷键是CTRL+K),AS中可以用F3实现类似功能,但用着特别不方便,因为它会弹一个下拉列表让你选;

程序运行的过程中调试代码(Eclipse中只需要在DDMS选中当前进程,点击调试按钮就可以了,但AS中没发现有这个功能,可能是我AS的版本问题吧)。

11、问:AS使用过程遇到过哪些问题,是怎么解决的?

答:

assets文件的存放目录在”src/main/”目录下,和java、res文件夹平级;

aidl文件需要单独在”src/main/”目录下新建一个文件夹,然后创建对应的包名,将aidl文件放在包名对应的包下。

引用libs文件夹中的so,需要在对应module下的build.gradle文件的android标签下加上如下属性:

android {

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}

}

}

android studio的编译时屏蔽掉lint检查,可以避免由于编译条件太过严格而编译不过的问题:

lintOptions {

abortOnError false

}

如果遇到多个jar包中的某个文件冲突,可以在对应module下的build.gradle文件的android标签下加上如下属性:

packagingOptions {

exclude 'META-INF/NOTICE.txt'// 这里是具体的冲突文件全路径

exclude 'META-INF/LICENSE.txt'

}

调整logcat文件显示的颜色:File→Setting→Editor→Colors&Fonts→Android

Logcat→在界面的右侧调节logcat每个级别日志的颜色;

显示行号:File→Setting→Editor→General→Appearance→勾选“Show line numbers”;

Logcat的console中,显示”no debuggable

applications”的问题:Tools→Android→Enable ADB Integration;

如果依赖工程和主工程中有同名同类型的资源文件,需要修改依赖工程中的资源名称编译时才不会报错,如果依赖工程中的这个资源文件是整个工程都不需要用到的,可以直接删掉;

Android

Studio中一个主工程依赖多个library的模式编译时很慢(clean和rebuild时,之前Eclipse中是这种模式),因为这种工程框架是主工程和每个依赖工程中都有一个build.gradle,编译起来会消耗比较长的时间,可以将没有资源文件和so的依赖工程打包成jar包,有资源文件和so的打包成aar文件,然后在主工程中引用,这样编译会很快;

Android

Studio对九图的要求很严格,如果文件以”.9.png”结尾但是图片不是9图,编译的时候会报错,解决方案是直接在AS中打开这张图片,通过9图编辑工具编辑成9图即可;

修改Module之间的依赖关系有两种方式:(1)直接修改每个module的build.gradle文件中的dependencies;(2)右键project→Open

Module

Settings→在弹出面板的左侧Modules一栏中选中要修改依赖关系的Module,点击右侧的Depencencies标签修改即可;

Android Studio自动导包:File→Settings→Editor→General→Auto

Import→Java→切换“Insert imports on paste”为“All”→勾选“Add unambigious

imports on the fly”;

代码格式化快捷键:CTRL+ALT+L;

重命名文件夹或者文件的快捷键:ALT+SHIFT+R;

鼠标悬浮在某个方法上时,显示该方法的信息:Preferences→Editor→Show doc on mouse move;

删除一个Module,直接在IDE中选中Module后按Delete是删不掉的,需要先右键project→Open Module

Settings→在弹出面板的左侧Modules一栏中选中要删除的Module→点击面板左上角的“-”符号→点击OK后回到IDE,然后选中要删掉的Module,按Delte快捷键删掉即可;

Android Studio中执行Lint等工具对代码的检测,Analyze→Inspect Code;

导入aar:将aar拷贝到libs文件夹,在module的build.gradle文件增加下面这段话:

repositories {

flatDir() {

dirs 'libs'

}

}

然后在build.gradle的dependencies标签中按照如下格式引用aar文件即可:

compile(name:'aar包名不带扩展名', ext:'aar')

12、问:AS相比于Eclipse,有哪些新的工具或者更方便的功能?

答:

查看APP的内存占用、内存变化情况的工具;

查看APP运行过程中网络使用情况的工具;

查看CPU、GPU使用情况的工具;

代码清理(Analyze—Code cleanup....)、代码静态检查工具(增强的ling检查工具,Analyze—Inspect

code....);

可以直接使用DOS窗口;

给打码加书签的功能(Eclipse也有,只是之前没用过);

IDE内9图编辑功能;

快捷键

......很多很多一些小的功能,用熟了特别方便。

13、问:在使用AS的过程中,有什么忠告?

答:就像在使用Eclipse的时候不要轻易更新ADT一样,在使用AS的过程中不要轻易更新gradle和AS,每个版本会有一些差别,会有很多坑,还是等新版本出来一段时间,比较稳定后再用,毕竟IDE是提高生产力的工具,如果需要花大把时间去学习如何使用和解决使用过程中的问题就太没意思了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容