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 ...
随机推荐
- libthrift0.9.0解析(四)之TThreadPoolServer&ServerContext
TThreadPoolServer直接继承自TServer,实现类serve和stop操作. 在serve中可以接受多个连接,每个连接单独开一个线程进行处理,在每个线程中,按顺序处理该线程所绑定连接的 ...
- Swift中可选型的Optional Chaining 和 Nil-Coalesce(Swift2.1)
/* 下面是介绍Optional Chaining 和 Nil-Coalesce */ // Optional Chaining (可选链) if let errorMessage = errorMe ...
- 洛谷 P1305 新二叉树
P1305 新二叉树 题目描述 输入一串完全二叉树,用遍历前序打出. 输入输出格式 输入格式: 第一行为二叉树的节点数n. 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输 ...
- X-Y Problem
X-Y Problem 对于X-Y Problem的意思如下: 1)有人想解决问题X2)他觉得Y可能是解决X问题的方法3)但是他不知道Y应该怎么做4)于是他去问别人Y应该怎么做? 简而言之,没有去问怎 ...
- 使用 HTML5 设计辅助功能
使用 HTML5 设计辅助功能 Rajesh Lal 下载代码示例 如果您真的对面向广大受众感兴趣,将需要为网站设计辅助功能. 辅助功能使网页更易于访问.更易于使用,可供每个人浏览. 通常,使用最新的 ...
- jquery与discuz冲去的解决方法
把相应的JQUERY代码天下如下代码: <script type="text/javascript"> jQuery.noConflict(); </script ...
- Ubuntu等Linux系统清除DNS缓存的方法
buntu等Linux系统清除DNS缓存的方法 直接说方法: 如果系统下有nscd,那么就直接 sudo /etc/init.d/nscd restart 如果没有也没关系,网上接受的方法大都是 su ...
- UCOS 堆栈大小 计算 (堆栈的决定性因素)
决定栈空间的大小,不仅需要计算任务本身的需求(局部变量.函数调用等),还要计算最多中断嵌套层数(保存寄存器.中断服务程序中局部变量等) 原文地址:uCOS任务堆栈的深入分析.作者:jiecou 堆栈作 ...
- d3可视化实战03:神奇的superformula
需求驱动实现 前文讲过了D3的数据驱动机制,中间所举的例子都很简单.例如那个demo里面,绑定的数据是一个简单的数组,实现的图元也仅仅是一堆用SVG画的circle.但是现实世界中我们往往会遇到复杂的 ...
- Javascript Promise 学习(上)
Promise 就是处理异步的一个规范方法 a();b();alert("a");如果a() 里面有一个ajax 或者settimeout 那么alert("a" ...