开发Android必知的工具
程序开发有时候非常依赖使用的开发工具,好的完备的开发工具可以让开发人员的工作效率有大幅度的提高。开发Android也是如此,大家可能都离不开Eclipse或Android Studio这些工具,但他们其实是集成开发环境(Integrated development environment, IDE),把很多工具集成在一个里面,配合可视化界面和键盘快捷键,方面寻找和使用。
不过有时候工具集成太多了,往往让人感到迷惑容易遗忘某个工具的存在。本文就谈谈Android开发和Debug时可使用的一些工具,这些工具都可以在安装了Android SDK的Eclipse或Android Studio找到相应的菜单和按钮来打开使用。但考虑到IDE很多时候打开速度实在太慢了,还是考虑直接使用指令在终端单独开打它们吧。
如果安装了Android Studio,这些工具可以在其安装包中找到,比如在Mac下它们就保存在/Applications/Android Studio.app/sdk/tools
路径下。如果是使用Eclipse,那么就需要手动下载Stand-alone Android SDK,解压之后也能在其下的tools文件夹里找到。
android
这个工具会叫android
也说明了它地位应该是最高的,的确它的功能包括了管理SDK(Software development kit)和AVD(Android Virtual Device),以及创建和更新开发使用的Project。通过android -h
就能看到其基本使用方式。
Usage:
android [global options] action [action options]
Global options:
-h --help : Help on a specific command.
-v --verbose : Verbose mode, shows errors, warnings and all messages.
--clear-cache: Clear the SDK Manager repository manifest cache.
-s --silent : Silent mode, shows errors only.
Valid
actions
are
composed
of a verb
and an
optional
direct
object:
- sdk : Displays the SDK Manager window.
- avd : Displays the AVD Manager window.
- list : Lists existing targets or virtual devices.
- list avd : Lists existing Android Virtual Devices.
- list target : Lists existing targets.
- list device : Lists existing devices.
- list sdk : Lists remote SDK repository.
- create avd : Creates a new Android Virtual Device.
- move avd : Moves or renames an Android Virtual Device.
- delete avd : Deletes an Android Virtual Device.
- update avd : Updates an Android Virtual Device to match the folders
of a new SDK.
- create project : Creates a new Android project.
- update project : Updates an Android project (must already have an
AndroidManifest.xml).
- create test-project : Creates a new Android project for a test package.
- update test-project : Updates the Android project for a test package (must
already have an AndroidManifest.xml).
- create lib-project : Creates a new Android library project.
- update lib-project : Updates an Android library project (must already have
an AndroidManifest.xml).
- create uitest-project: Creates a new UI test project.
- update adb : Updates adb to support the USB devices declared in the
SDK add-ons.
- update sdk : Updates the SDK by suggesting new platforms to install
if available.
android sdk
全新的SDK包里是没有编译工具的,Android程序员都知道Android有很多个版本,开发时要针对版本进行设计和编程。android sdk
指令就可以开打一个可视化的管理窗口,让用户可以在上边选择下载需要的Android版本以便可以使用其上的API。还可以下载相应API的源码方便学习。
(可以不加sdk
参数,直接使用android
指令也是打开SDK管理窗口。)
在这个界面上也可以选择将SDK工具,也就是本文中所要提到的工具,更新到最新的版本。如果不小心更新到了现在开发还不兼容的SDK版本,在这里就无法降版本了,只能到晚上重新下载旧的版本,然后拷贝到前面提到的sdk文件下覆盖现有的tools文件夹。
android avd
开发Android程序一定要有设备来做测试。最好的就是破解了的具有管理员权限的实体设备;如果没有,一部可以开启开发者选项的普通实体设备也可以。因为实体设备的运行效率是最好的(只要不是已经差不多块被市场淘汰的老旧的Android手机),呈现的效果也更接近真实用户的体验。如果实在没有实体设备来做开发,那就只能退到虚拟设备上了。
android avd指令可以打开虚拟设备管理器,方便创建和修改Android虚拟设备以供开发测试。不过在此之前还是需要使用SDK管理器去下载相关API版本的设备镜像才能创建指定版本的虚拟设备。
虚拟设备毕竟是借用电脑上的资源所以相对来说运行速度会很慢。但使用虚拟设备也有几个好处:不用担心设备没有电;在做演示的时候可以投影显示;可以创建不同API版本和屏幕尺寸的设备来做查看效果,就不需要花很多钱买齐各种设备。
其他功能
android指令还可以用创建Android项目,然后用ant或gradle来编译,这样就可以完全脱离IDE。不过多数情况下还是会倾向于使用IDE来创建,毕竟可视化的界面会更加的便捷。有时候可能想要部署到其他的设备或者开发项目可以使用这些脚本来做到一键创立。
DDMS
这个工具也是极为重要的,使用频率比android是高很多。android这个工具大多数是用来做初始化配置,而ddms则是debug过程中不可缺少的。它可以查看程序使用时所运行的线程信息,网络使用率,可以进行profiling来查看期间那个方法使用了最多的资源。
在Eclipse和Android Studio中都已经很少的集成了logcat内容的展示,在IDE中还能直接通过点击异常的条目来跳转到相应的出错文件的指定行,十分方便,所以一般不会单独在终端打开这个界面。
dmtracedump
这个指令不太常用,主要是把profiling生成的trace文件处理成一个图片文件,显示方法之间的调用关系。除了看得比较酷炫,实际很难直接从图上找出太多有用的价值。
uiautomatorviewer
这个工具在我看来绝对是神器啊,它可以展示出当面屏幕所呈现的视图(View)的布局(Layout)以及其尺寸大小。这样就可以用来调整xml文件来重新安排布局。不过更多时候,我用它找到视图的id,然后通过id反向寻找对应的的xml文件。
这个工具不局限在只能查看自己的应用,它可以显示屏幕上的任何东西。所以可以用它来看看别人的应用使用了什么View来呈现也是不错的,比如看看他们是用ListView还是RelativeLayout,用的时button还是textview加点击事件。
有些局限就是它不支持查看自定义的视图,只会显示系统定义的类型名字。另外如果是利用canvas和OpenGL画的内容,也无法查看到其具体细节。不过知道别人是自己画的,不是简单组合几个系统视图那也是很有用的信息。
traceview
这个工具也是用来打开profiling生成的trace文件的,但它远比dmtracedump
要好用的多。traceview
会列出每个方法调用所使用的事件,展开方法还能看到方法被调用其他方法所占用的时间百分比。这样就可以知道那个方法用了最多的资源,进而可以对其进行优化或者将其搬离主线程。
monitor
说了那么多工具,再来说monitor
工具,我感觉前面说这么多都是在浪费时间,因为只要这一个就可以包含全部前面介绍的工具了。还额外附赠了好些功能,比如uiautomatorviewer
一次只能查看一个屏幕布局,但使用monitor
捕获会生成独立的文件,查看互不影响。只能说前面的只是为各个工具做功能介绍,真需要用的时候只要打开monitor
就好了。
同样的它也可以打开trace文件分析方法调用所花了的时间。
其它
emulator
用指令emulator -avd <name>
来启动给定名字的虚拟设备,不过一般还是会通过AVD管理器来打开。但是如果某个虚拟设备经常使用,用这个来打开是挺方便的。要是记不住名字,可以通过android list avd
来查看。
monkeyrunner
这个指令可以运行一些脚本来模拟一个返祖用户是如何疯狂的使用开发的应用程序的,用它做一些压力测试也是挺好的。如果不想写脚本,也可以直接使用adb下的monkey指令来做类似的测试。
sqlite3
Android默认自带了sqlite做数据库,SDK中也提供了简洁清晰的API来创建和访问sqlite数据库文件。数据库文件存在于设备的/data/data/<app-packagename>/databases路径下,每个应用都有自己保存数据库文件的文件夹。SDK工具中也带了这个sqlite3工具帮助喜欢用终端来查看sqlite文件的程序员来访问数据库文件。
不过我很少使用这个工具,因为必须要把sqlite数据库文件设备中用adb pull
指令提取到电脑上。而对于普通设备,因为缺少操作权限而无妨提到sqlite数据库文件。对于破解的具有管理员权限的实体设备或者虚拟模拟器,它们在设备上就有sqlite3
指令可以直接在adb shell
下操作。更主要的原因是我还是习惯用具有可视化的程序来查看这些数据。
mksdcard
该工具是为Android虚拟设备提供一个伪造的sdcard来提供设备的存储量。多个设备也可以共用一个由这个工具创建出来的文件,只要他们不同时启动使用。
在终端运行这些工具时,可以在指令最后加上 &
让其在背后运行,这样就可以在一个终端同时打开多个工具了。要像了解其他更多关于最新Android工具的内容,可以浏览Android开发官方网站,还有Android Tools Project Site网站,以及历年Google IO上介绍Android工具的视频。
除了这些工具外,Android还有一个更强大的工具那就是adb
,不过它更像是指令没有可视化界面。而且adb
已经从tools文件夹移到了platform-tools下了。在之前已经有文章介绍通过它查看Activity Stack的方式,之后也会有更多文章来详细介绍它。
References:
- SDK Tools | Android Developers
- Managing Projects from the Command Line | Android Developers
- Updating SDK from command-line – Android Tools Project Site
- Using DDMS | Android Developers
- Android: how to use dmtracedump – Stack Overflow
- Google I/O 2014 – What’s new in Android development tools – YouTube
- Google I/O 2011: Android Development Tools – YouTube
开发Android必知的工具的更多相关文章
- 学h5前端开发前必知的三大流行趋势
学h5前端开发前必知的三大流行趋势 随着互联网时代的飞速发展,各种互联网的Web应用程序层出不穷,很多人对于HTML5前端开发的过程充满了好奇,但是却没有了解到前端开发的未来发展趋势.下面,云慧学院专 ...
- Android必知必会-使用okhttp的PUT方式上传文件
注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望CSDN能更好的支持移动端. 背景 公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp ...
- Android必知必会-获取视频文件的截图、缩略图
背景 公司最近要求给我负责的APP加上视频录制和发布的功能,我简单的完成了基本的录制和视频压缩功能,后来发现发布接口需要上传视频的截图,网上搜索了一下资料,在这里整理一下. 代码实现 /** * 获取 ...
- xamarin开发android收集的一些工具
xamarin开发android收集的一些工具 工欲善其事,必先利其器,从16年下半年开始做xamarin相关的开发,平时使用的一些工具和google插件给大家分享一下,都有下载地址,持续更新. Vi ...
- Android必知必会-Android Studio下配置和使用Lambda
移动端如果访问不佳,请访问–>Github版 背景 和朋友讨论 JAVA8 的新特性,聊到Lambda,正好在掘金上看到一篇相关的文章,结合资料,作一个总结,特别是记录下实际使用中遇到的问题. ...
- Android必知必会-Stetho调试工具
一.背景 Stetho是 Facebook 出品的一个强大的 Android 调试工具,使用该工具你可以在 Chrome Developer Tools查看APP的布局, 网络请求(仅限使用Volle ...
- Android开发人员必知的开发资源
developer.android.com 官方开发人员网站推荐资源 在动手编写第一个 Android 应用之前,用心读一读 Android Design 章节.尤其是以下的这些文章: Devices ...
- Android 必知必会 - 依据包名推断 App 执行状态
假设移动端訪问不佳,请訪问: 掘金版 Github 版 获取指定包名的 APP 是否还在后台执行,推断 APP 是否存活. 背景 能够依据 App 是否有 Service 分两类情况处理: 没有 Se ...
- 【经典】Linux开发人员必看资料+工具
Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.Linux可安装在各种计算机硬件设备中,比如手机.平板电脑.路由器.视频游戏控制台.台 ...
随机推荐
- Web Api 中返回JSON的正确做法
在使用Web Api的时候,有时候只想返回JSON:实现这一功能有多种方法,本文提供两种方式,一种传统的,一种作者认为是正确的方法. JSON in Web API – the formatter b ...
- 【基础知识】.Net基础加强08天
一. 文件的读取 1. 有FileStrem,为什么还要StreamWriter和StreamRead StreamWriter和StreamRead是用来读取文本文件的,每次只读取一行文本文件 二. ...
- Dynamic CRM 2013学习笔记(十八)根据主表状态用JS控制子表自定义按钮
有时要根据主表的审批状态来控制子表上的按钮要不要显示,比如我们有一个需求审批通过后就不能再上传文件了. 首先打开Visual Ribbon Editor, 如下图,我们可以利用Enable Rules ...
- Dynamic CRM 2013学习笔记(三十)Linq使用报错 A proxy type with the name account has been defined by another assembly
在CRM中使用linq时,有时会报这个错误: A proxy type with the name account has been defined by another assembly. Curr ...
- ASP.NET Web API 跨域访问
自定义特性 要在WebApi中实现JSONP,一种方式是实现自定义特性 http://stackoverflow.com/questions/9421312/jsonp-with-asp-net-w ...
- ajax异步请求Response.Redirect重定向
一个ajax异步请求报错->捕获异常->重定向错误提示页面. 一个简单的流程 结果一直搞不定.重定向无效.各种百度之. 后来突然想起 ajax的请求是不能在后台重定向的. 如果硬要重定向 ...
- 用word-break: break-all解决不正确换行问题
这个在新闻频道存在已久的问题,今天终于把它给解决了! 问题是这样的,当一段文字中有比较长的链接地址,会造成链接地址之前的文字不能正确换行,效果如下: 对应的html代码如下: <p> 如图 ...
- Ora-01536:超出了表空间users的空间限量(转)
Ora-01536:超出了表空间users的空间限量(转) 正在开会,同事跑过来说数据库有问题,通讯程序不能入库,赶快获取一条insert into a values()语句后在toad工具中手动插入 ...
- VS .sln .csproj 文件的右键编译
背景:VS很好很强大,但太费系统资源了,尤其是在虚拟机在里面装VS的时候更是如此.有时用vi编辑了源代码后,不想开VS IDE编译,但每次打开VS命令行,再切换到工程所在目录,然后手动敲命令太麻烦了. ...
- paip. 定时 关机 休眠 的总结
paip. 定时 关机 休眠 的总结 //////////////////title bat shell 批处理日期时间的使用比较. bat shell 批处理if else 多行.. 作者Attil ...