Android Studio提供了丰富的内置开发工具,以及更丰富的插件生态系统。本系列的前三篇文章重点介绍如何使用Android Studio 安装和设置以及编码和运行一个简单的移动应用程序。现在,您将熟悉一些更高级的工具:三个内置工具和三个插件,用于调试和提高Android应用程序代码的质量和生产率。
本文介绍了适用于Android Studio的以下工具:
内置调试工具
用于提高开发人员生产力的插件
在最新版本的Android Studio中查找所需内容,包括对Kotlin的支持以及对内存管理和UI响应能力的改进。
有问题的应用程序是失去用户的潜在原因。Logcat和Debug是Android Studio内置的两个工具,可用于识别和修复Android代码中的错误。
您可能不需要或不希望为每个错误提供完善的调试器。在某些情况下,记录和更正某些变量的值就足够了。Android Studio的Logcat非常适合此任务。
Logcat是一个命令行工具(集成到Android Debug Bridge-ADB中),可转储系统消息日志,可帮助您查找和修复代码中的问题。消息包括有关设备何时引发错误的堆栈跟踪,并记录您有意嵌入android.util.Log
该类的消息。Logcat非常有用,它已直接集成到Android Studio中,您可以在其中从“ **视图”**菜单或工具窗口栏访问它。
logcat的窗口分为下拉列表和其他控件随后消息区的一个水平行。从左到右,控件是:
在源代码中,您可以插入对各种android.util.Log
方法的调用以记录消息。例如,您可能调用public static int i(String tag, String msg)
来记录INFO
-level消息或public static int w(String tag, String msg)
记录WARN
-level消息。
对于这两种方法,传递给标记的字符串都标识消息的来源(例如,调用此日志记录方法的方法),传递给msg的字符串标识所记录的消息。
另外,您可以调用System.out
和System.err
的print()和println()
方法。调用System.out
方法可完成与log.i()
调用相同的操作;对System.err
方法的调用与log.w()
调用完成的功能相同。
在图2中,仅显示的消息是针对在模拟Nexus 5X设备上运行的示例应用进程的。此外,这些消息必须包含**“仅显示选定的应用程序”**过滤器onCreate
并被其接受。
查看Google的“ 使用Logcat编写和查看日志 ”以了解有关Logcat的更多信息。还要学习android.util.Log
课程的文档。
对于非常简单的应用程序,使用Logcat记录和更正代码是可以的。对于更复杂的应用程序,这种调试形式可能很乏味。相反,您将需要一些可以调试应用程序的可执行代码的东西。Android Studio的内置调试工具提供了许多功能,包括以下功能:
使用此调试工具之前,需要满足一些先决条件:
如果您的应用程序包含C / C ++源代码,则需要从SDK Manager 安装LLDB(请参见图3)。幸运的是,本系列的示例应用程序(W2A)不包含C / C ++代码,因此我们可以忽略此先决条件。
您必须在连接的设备上启用调试。但是,如果您使用的是模拟器(本例中使用的是模拟器),则可以忽略此先决条件。默认情况下,在模拟设备上启用调试。
您必须运行可调试的构建变体。默认情况下,它是为您创建的,因此在许多情况下(包括本示例),您不必担心。
让我们开始一个快速调试会话。
假设您在打开示例应用程序(W2A.java)的编辑器窗口的情况下运行Android Studio,那么第一步就是在该public void onCreate(Bundle savedInstanceState)
行上设置一个断点。通过突出显示此行并执行以下操作之一来设置断点:
现在,从“ **运行”**菜单中选择“ 调试”应用程序,或单击工具栏上的相应图标。如果模拟器未运行,则将看到“ **选择部署目标”对话框。我选择了Nexus 5X API 15,**然后单击“ 确定”。
在等待模拟设备上线时,单击工具窗口栏上的“ **调试”**按钮以显示“ **调试”**窗口。最终,您应该看到类似于图4的内容。
调试窗口提供了step over, into, and out of a method等图标按钮。图5显示了我们逐步采用一种方法时会发生什么。
单击相应的图标按钮,然后从“ 运行”菜单中选择“ 跳过”,或按F8键。这使我们onCreate()
在逐步执行每个方法调用时可以更深入地研究方法。
为onCreate()
方法选择带有结束符}
的行,然后选择**“运行至光标”**。您会收到有关该应用程序正在运行的通知。解锁设备后,您应该会看到示例应用程序的活动窗口。
查看Google的“ 调试您的应用 ”以了解有关在Android Studio中进行调试的更多信息;例如,如何使用各种断点。
虽然这里没有介绍,但我建议您检出GAPID:Graphics API Debugger,这是一组调试工具,可让您检查,调整和重播从Android应用程序到图形驱动程序的调用。
无论您多么认真地编写它,源代码都可能包含错误,样式问题,并且可能引用由于某种原因而处于非活动状态的资源。Lint是一种可以扫描源代码以查找这些令人讨厌的错误的工具,并报告给开发人员。
Lint是用于Android SDK的内置linter。 您可以使用它来查找问题,例如目标API不支持或不赞成使用的元素和API调用。
要在Android Studio中运行Lint,请从“ **分析”**菜单中选择“ 检查代码… ” 。这样会打开“ **指定检查范围”**对话框。
从对话框中选择所需的范围(在这种情况下为整个项目),然后单击“ **确定”**开始检查。结果将显示在“ **检查结果”**窗口中,并按类别进行组织。
出于其本质,Lint挑选了一些问题,否则可能会使应用程序代码混乱。一旦发现,就很容易修复图8所示的三个Java警告:只需声明androidAnimation
private
并从两个findViewById()
方法调用中删除强制类型转换。
查看“ 使用lint check改进代码 ”以了解有关在Android Studio中使用Lint的更多信息,并了解Android SDK的独立Lint工具。
尽管内置工具有其优点,但许多其他工具也可以作为插件使用。在本节中,我们将研究三个插件,以提高您在Android Studio中的编码效率:
Android Studio的插件管理器使查找和安装插件非常容易。通过选择激活插件管理器文件 > 设置,然后插件从设置对话框:
接下来,单击“ **浏览存储库…”**以打开“ **浏览存储库”**对话框,其中显示了受支持插件的完整列表。我们将使用此对话框选择第一个插件ADB Idea。
通过提供对常用ADB命令(例如启动和卸载应用程序)的快速访问,_ADB Idea_加快了Android的日常开发。
在插件的存储库列表中选择“ ADB Idea ”,然后单击“ 安装”按钮。Android Studio继续下载并安装插件。然后,它重新标记“ 安装以重新启动Android Studio”。对于每个插件,我必须在单击Restart Android Studio之后重新选择插件,然后再次单击此按钮以重新启动Android Studio。
安装后,Android Studio允许您从其“ **工具”**菜单访问ADB Idea 。选择“ **工具”>“ ADB Idea”,**然后从出现的弹出菜单中选择适当的命令。
选择ADB Restart App之后,我在事件日志窗口中以及在我的Amazon Kindle设备上重新启动的应用程序中看到以下消息。
您可以使用_Codota_插件来访问Codota搜索引擎,该引擎使您可以浏览数百万个公开可用的Java源代码片段,以解决Android编码问题。
在插件的存储库列表中选择Codota,然后单击“ **安装”**按钮。Android Studio下载并安装了插件后,它将重新标记“ 安装”按钮以重新启动Android Studio。重新启动会激活Codota。
重新启动后,您将遇到“ Codota身份验证”对话框。单击链接,然后按照说明接收令牌。然后,将令牌粘贴到上述对话框中,然后单击“执行”。
借助Android Studio,您可以通过在编辑器窗口中右键单击Java代码并选择“ **获取相关示例”**菜单项来访问Codota,如图16所示。
单击此菜单项将导致浏览器显示一个包含相关代码示例的页面。例如,以下页面提供了与findViewById
相关的示例:
Lombok项目提供了一组注释,可用于代替样板代码,从而节省了您手动编写此代码的时间。
在插件的存储库列表中选择Lombok插件,然后单击安装。Android Studio下载并安装插件后,它将提示您重新启动Android Studio。重新启动会激活Lombok插件。
用一个简单的例子说明 Lombok的用处。假设我们将以下最小Robot
类添加到示例应用程序的W2A.java
源文件中:
class Robot
{
private String name;
}
此类的想法是,我们将存储正在设置动画的机器人的名称以及可能有用的任何其他信息,并将此信息显示为toast弹窗(一条小消息,类似于工具提示)。
我们可能需要花费几分钟时间来向此代码添加构造函数和getter/setter方法。但是,更好的选择是让Lombok为我们添加此样板。步骤如下:
Robot
。现在,您应该观察@lombok.Data
到class Robot
标头前面有一个注释。此注释使构造函数,getter / setter方法以及其他样板代码自动生成。您可以通过重复前面的步骤来查看所有的这些样板,但是这次选择Delombok而不是Lombok。您会看到Lombok生成了如下内容:
class Robot
{
private String name;
public Robot() {
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public boolean equals(final Object o) {
if (o == this) return true;
if (!(o instanceof Robot)) return false;
final Robot other = (Robot) o;
if (!other.canEqual((Object) this)) return false;
final Object this$name = this.getName();
final Object other$name = other.getName();
if (this$name == null ? other$name != null : !this$name.equals(other$name)) return false;
return true;
}
protected boolean canEqual(final Object other) {
return other instanceof Robot;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $name = this.getName();
result = result * PRIME + ($name == null ? 43 : $name.hashCode());
return result;
}
public String toString() {
return "Robot(name=" + this.getName() + ")";
}
}
Android Studio是用于开发Android应用程序的绝佳环境(尽管有些漏洞)。在这个简短的系列文章中,我向您展示了如何下载和安装Android Studio,引导您完成了简短的Android应用程序开发教程,向您展示了如何在安卓模拟器上构建和运行应用程序,并向您介绍了许多有用的方法用于Android开发的工具和插件。
还有更多的东西可供您学习。例如,您可能想玩Android Profiler来监视应用程序的性能并发现任何隐藏的性能瓶颈。您可能还需要安装和探索其他插件来提高编码效率。
希望您将Android Studio及其内置工具和可扩展插件架构一起使用,以开发Android移动应用。