程序开发有时候非常依赖使用的开发工具,好的完备的开发工具可以让开发人员的工作效率有大幅度的提高。开发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.Validactionsarecomposedof a verband anoptionaldirectobject:
-    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 foldersof a new SDK.
- create project      : Creates a new Android project.
- update project      : Updates an Android project (must already have anAndroidManifest.xml).
- create test-project : Creates a new Android project for a test package.
- update test-project : Updates the Android project for a test package (mustalready have an AndroidManifest.xml).
- create lib-project  : Creates a new Android library project.
- update lib-project  : Updates an Android library project (must already havean AndroidManifest.xml).
- create uitest-project: Creates a new UI test project.
- update adb          : Updates adb to support the USB devices declared in theSDK add-ons.
- update sdk          : Updates the SDK by suggesting new platforms to installif 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:

  1. SDK Tools | Android Developers
  2. Managing Projects from the Command Line | Android Developers
  3. Updating SDK from command-line – Android Tools Project Site
  4. Using DDMS | Android Developers
  5. Android: how to use dmtracedump – Stack Overflow
  6. Google I/O 2014 – What’s new in Android development tools – YouTube
  7. Google I/O 2011: Android Development Tools – YouTube

转载于:https://www.cnblogs.com/duanweishi/p/7119350.html

开发Android必知的工具相关推荐

  1. Python开发工程师必知十大机器学习库

    Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,再加上其简单.易学.速度快.开源免费.可移植性.可扩展性以及面向对象的特点,Python成为2017年最受欢迎的最受欢迎的编程 ...

  2. xamarin Android 截屏,xamarin开发android收集的一些工具

    xamarin开发android收集的一些工具 工欲善其事,必先利其器,从16年下半年开始做xamarin相关的开发,平时使用的一些工具和google插件给大家分享一下,都有下载地址,持续更新. Vi ...

  3. 开发人员必知的5个CI/CD工具

    一旦你选择了最好的CI/CD工具,你将继续你的DevOps生命周期.如果操作得当,它将能够提高产品质量并鼓励你的团队充满自信地进行发布游戏. 软件工程的最新规范是"以更快的速度同时保证产品质 ...

  4. Android必知必会-Android Studio下配置和使用Lambda

    什么是Lambda表达式 lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...

  5. Android必知必会-Stetho调试工具

    一.背景 Stetho是 Facebook 出品的一个强大的 Android 调试工具,使用该工具你可以在 Chrome Developer Tools查看APP的布局, 网络请求(仅限使用Volle ...

  6. 2021Android App开发工作必知必会之【性能优化,含BATJM大厂

    1.启动窗口优化 启动窗口,也叫启动页.SplashWindow.StartingWindow 等,指的是应用启动时候的预览窗口.iOS App 强制有一个启动页,用 户点击桌面 App 图标之后,系 ...

  7. 【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )

    文章目录 前言 一.Android 端可执行程序的 main 函数操作 二.Android 端 TCP 协议服务器建立 三.Android 端接收 PC 端传来的数据 四.博客资源 前言 本篇博客重点 ...

  8. .NET开发人员必知的八个网站

    http://space.cnblogs.com/group/topic/33472/ 2009-10-22 14:07 来自 [组长]云中深海      : 当前全球有数百万的开发人员在使用微软的. ...

  9. 还在重复造轮子?Java开发人员必知必会的20种常用类库和API

    介绍 一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不 ...

最新文章

  1. c++ 该使用类内初始值么?
  2. 部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API
  3. 固态硬盘怎么看出厂日期_固态到底怎么选?雷克沙NM610和西部数据SN500固态硬盘实测对比...
  4. 那些年让我们头疼的CSS3动画
  5. mysql之判断字段是否存在于表中
  6. python整个小服务器
  7. 【故障诊断分析】基于matlab概率神经网络柴油机故障诊断【含Matlab源码 1754期】
  8. SpringCloud学习
  9. Scala安装教程(windows和linux)
  10. 学习笔记75—方差分析(主效应和交互效应)
  11. Java 中status意思_struts的status属性
  12. android自定义键盘 下划线,TabLayout 自定义下划线
  13. mysql navicat导入sql文件 报错 [Err] 1046 - No database selected
  14. 记录element ui dialog弹框生命周期问题
  15. 一张图看懂offsetX, clientX, pageX, screenX的区别
  16. 国庆作业之感想与总结
  17. DBA到底要做什么?
  18. java 吉时开奖网数据爬取中奖的数据
  19. CentOS 恢复 rm -rf * 误删数据--extundelete
  20. 华升富士达电梯调试软件、故障分析软件,PMC,EEC,ROM

热门文章

  1. UbuntuKylin技巧
  2. Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
  3. 有SELinux引起的Apache基于端口的虚拟主机启动失败
  4. 表间数据复制--SELECT表中的数据插入到新的表中(ORACLE,MSSQL)
  5. Switcher ---Vista Areo 工具
  6. 用ABAP代码读取S/4HANA生产订单工序明细
  7. 如何定义研发KPI:以团队速度为标准
  8. 爬虫抓取页面数据原理(php爬虫框架有很多 )
  9. 重设wordpress用户密码
  10. c# 正则过滤非中文字符