Android Studio试用总结
Android Studio是一年前Google I/O上推出的一款Android开发IDE,他基于JetBrains’ IntelliJ IDEA,目前还在preview阶段。增强了布局拖拽和预览功能,使用了新的构建系统Gradle,增加了android相关的重构和quick fix功能。之前听说用Android Studio来构建应用程序的时候会很方便,而且在学习常用Android开源项目的时候看到大部分都提供了对Android Studio的支持,所以就折腾了下,分享点经验给大家。
大多数Android Studio尝鲜者遇到的最大的障碍是Gradle,启动的时候非常慢,他需要从Maven库下东西,网络不稳定,这就坑了,不知道别人怎么解决的,我是FQ搞的,光这一点就阻止了Android Studio大陆范围内推广,而且多人合作的时候同伴不一定习惯这个东西。网络的问题如果解决后,就需要了解Gradle的构建原理,这也需要费一番功夫的,去年谷歌I/O上有40分钟的视频来说明他是怎么工作的,链接在这里,讲的很清楚,在Linkedin上查到主讲人的头衔是”Tech Lead for the Android SDK at Google”。
你可以新建一个HelloWorld工程感性的认识一下Android Studio的使用。你肯定会在这个过程拿他和Eclipse做对比,很可惜的是,他们的目录结构不像AppCode和Xcode一样目录完全兼容可以相互无缝替换,不能直接import对方的工程,虽然现在Eclipse提供了功能可以把现有项目导出来再导入到Android Studio中,但是这个过程并不是无痛的,也会有些小问题,很麻烦;反过来,要把Android Studio中的项目导出来到Eclipse中,那就是纯属找事了。
Android Studio的项目包含一个或者多个Module,这里的Module可以是Android应用,也可以是库,一般来说,新建一个项目也自动会新建一个Module,编译的时候就会编译这个Module,生成需要的apk。当我们需要引入一个开源库的时候怎么办呢?可以新建一个Module,选定类型为‘android-library’,然后让主要的Module依赖于这个就行了(这个过程就像Eclipse上一样,不同的项目可以有引用的关系)。然而Android Studio是在背后做了一些东西的,其实每个Module都有一个build.gradle文件,用来描述这个Module构建时候需要的条件,整个项目也有一个build.gradle文件,是所有Module构建时需要满足的条件,最后项目还有个settings.gradle,记录了项目里面有哪些Module。你增减Module,修改依赖关系的时候,其实就是在修改这几个文件。
其实最方便的东西就是我接下来要说的,很多开源项目都应集成到了maven库当中,我们可以很方便的把这些项目引用到自己的项目中,而不用再去github克隆代码再拷贝再配置了。我们拿下拉刷新组件ActionBar-PullToRefresh为例,我们只需要在需要他的Module的build.gradle中dependencies里添加一句话”compile ‘com.github.chrisbanes.actionbarpulltorefresh:library:+'”就行了。Android Studio会自己去下载,方便不方便你动手试试就知道了。如果你不知道maven库里有没有,可以在相应的Module上点击右键,选择“Open Module Setting”,找到dependencies选项卡,在下面点击加号,选择“Library Dependency”,然后搜一下就行,其实常用的android-async-http,ActionBarSherlock,Android-Universal-Image-Loader 等等都是有的,你不用再在git仓库里加一堆冗余的代码了,只需要在build.gradle增加一行就行,何乐而不为?
在平时开发Android应用的过程中,难免会用到android.support.v4.jar,一般的做法是把他从SDK放到项目的libs目录下,避免别人拷贝代码后不能编译通过。然后在引用多个开源项目的时候,会发生版本不一冲突的情况,一般的做法是把冲突的jar包替换成同一个,但是在你不知道怎么解决的时候产生的错误信息是很令人沮丧的,幸运的是,在Android Studio中这种情况不会出现了,你只需要在对应Module的build.gradle的dependencies里添加一句话就可以了“compile ‘com.android.support:support-v4:+’”,多个模块引用他的时候不会出现冲突。
说了这么多Gradle相关的的,再说说IDE本身的一些优缺点吧:
启动和编译比较慢。我也不知道是什么原因,用的mac,固态硬盘,按理说应该很嗨才对。每一次对build.gradle的更改都会产生Android Studio一个操作‘sync’,然后就产生界面就卡死了。这个算是bug吧,而且时不时会出现Internal Error,还好出现频率可以接受。编译也比较慢,那个”Tech Lead for the Android SDK”需要加把劲了。
界面好看。用过几款Jetbrains的产品,界面还是挺舒服的,最然可用的只有两套主题,之前用Eclipse的时候,我实在忍受不了界面上浓浓的java UI气息,而且图标还会有锯齿边缘。
方便的颜色选择器。在布局文件中,比如你有用到android:background=”#ffffffff”,那么在这一行的最左边会出现一个框框,里面就是白色的,你点击这个白色框框,弹出一个对话框用来选择颜色,十分直观。
直接显示资源内容。如果你有用到android:layout_width=”@dimen/image_width”,Android Studio会把image_width的值直接替换到引号里面。
DDMS集成的不太好。打开Android Monitor,赫然一个awt界面出现在眼前,毫无美感呀。但是基本的logcat,截屏,debug功能都是有的。
总体来说,Android Studio还是符合个人开发者的需求的,我自己平时写点小东西的话都用Android Studio,相信他会越来越好的,期待正式版出来的那一天。
ps:下次这种内容的东西考虑直接录一个短视频放过来,通篇文字不知道会不会有人烦:-D
Android Studio试用总结的更多相关文章
- Android Studio体验(二)--创建项目和Genymotion试用
上周日已经体验了一把Android Studio顺便没事点了点其他功能,不过还是从自己创建项目开始说吧,首先我们要熟悉Android Studio中的Project 和 Module 两个概念.And ...
- 【Android Studio】安卓开发初体验1——安装与试用
安装 (安装预留硬盘(C盘)空余空间16G以上,8G以上内存) Intel用户: 安装Android Studio和AVD(安卓虚拟机 Android Virtual Device) 安装过程需要注意 ...
- ubuntu 14.10 lts 64-bits环境下使用Android Studio
距离google发布android studio 1.0正式版已经两个月左右了.由于一直习惯使用eclipse+ADT的模式,而且曾在windows下试用一次Android Studio预览版,感觉卡 ...
- [Android Studio]SQLScout插件安装破解
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5972138.html [Android Studio]SQLS ...
- Android Studio 使用Lambda
1,昨天在使用RxJava的时候,调用map.filter之类的方法要创建挺多的匿名内部类,所以我们打算试用一下Lambda让我们的代码更有阅读新性,下看一下我们的对比 在使用之前我们代码是这样的 O ...
- Android Studio 简介及导入 jar 包和第三方开源库方[转]
原文:http://blog.sina.com.cn/s/blog_693301190102v6au.html Android Studio 简介 几天前的晚上突然又想使用 Android Studi ...
- Android Studio单元测试入门
Android Studio单元测试入门 通常在开发Android app的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity上)执行一下,运行整个工程 ...
- Android Studio打包全攻略
转载:http://www.2cto.com/kf/201606/517300.html 初出茅庐 手动打包 怎么手动打包 项目写完了,现在需要把应用上传到市场,问题出现-怎么把代码变成.apk(An ...
- Android Studio使用教程(一)(转)
今年的Google全球开发者大会虽然没有新的Android系统和设备,但是还是推出了一些不错的产品,Android Studio就是其中之一.这个基于Intellij IDEA开发的Android I ...
随机推荐
- 武汉科技大学ACM :1003: 零起点学算法14——三位数反转
Problem Description 水题 Input 输入1个3位数(题目包含多组测试数据) Output 分离该3位数的百位.十位和个位,反转后输出(每组测试数据一行) Sample Input ...
- querySelector选择器
querySelector选择器可以通过document和element来调用他们 用来代替getElementById var body=document.querySelector("b ...
- 如果设置http.get超时控制
var timeout_wrapper = function (req) { return function () { // do some logging, cleaning, etc. depen ...
- php本页面调试报错配置
ini_set('display_errors', 'On'); ini_set('memory_limit', '64M'); //报错,详细 error_reporting(E_ALL); //不 ...
- Javascript的location对象
JavaScript window.location对象 示例 注意 方法 经常使用window.location,它的结构总是记不住,简单梳理下,方便以后查询. 示例 URL:http://b.a. ...
- 转: fscanf()函数详解
以前解析有规律的文件的时候要么用正则表达式,要么就是傻傻的自己写程序来解析有规律的文件.今天突然发现c的库函数中有一个现成的可以解析有规律的文件的函数,就是fscanf()函数.哎 以前自己做了这么多 ...
- win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装 http://blog.csdn.net/jiangzeyun/article/details/41676639
- C51的编程规范
现在单片机的程序设计,C51已经得到广泛的推广和应用,算是单片机的主流设计程序,甚至可以说作为单片机开发人员必须要掌握的一门语言了.作为一门工具,最终的目的就是实现功能.在满足这个前提条件下,我们希望 ...
- cursor: pin S
declare v_sql varchar2(200); begin loop v_sql :='select seq1.nextval from dual'; execute immediate v ...
- BZOJ3390: [Usaco2004 Dec]Bad Cowtractors牛的报复
3390: [Usaco2004 Dec]Bad Cowtractors牛的报复 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 43 Solved: ...