专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
目录
相关文章推荐
芋道源码  ·  SpringBoot3实战:实现接口签名验证 ·  4 天前  
芋道源码  ·  再见ExecutorService,你好St ... ·  4 天前  
芋道源码  ·  K 神!国产神级搜索引擎~太强了? ·  6 天前  
51好读  ›  专栏  ›  java一日一条

高效Android开发者必须知道的4个工具

java一日一条  · 公众号  · Java  · 2017-01-23 10:35

正文

移动app开发是一个漫长而费力的过程。然而,现在的企业总是希望能够尽快发布app。幸运的是,我们有很多帮助移动开发人员加快工作步伐的工具。

可用的工具集随着移动平台新版本的出现而不断更新。是的,我们很难紧跟所有创新的脚步。这同样适用于通常不被公布的附加功能,尽管它们在常规作业中真的非常有用。

特别是,在创建移动app的时候,每个Android开发者必须解决一系列的问题。例如:

  • 在布局运行到设备之前先检查它看上去如何

  • 运行代码检查工具,如Lint:在编译之前很难发现代码中的错误

  • 为位图图形的所有显示分辨率和状态(启用,禁用,按压等)提供选择选项,并将它们导出到不同的数字设备

  • 在调试app构建中的开发阶段检测内存泄漏

有经验的开发人员可以轻松地处理上述任务。然而,快速而高效解决紧迫问题的方法并不是每个人都知道的。下面让我们为大家详细介绍一些高效Android开发中必知的好工具。

1.Tools Attributes

任务:检查UI元素在开发阶段是什么样的,避免它们在最终构建中出意外。

解决方案:Tools Attributes

Tools Attributes可以使用额外的命名空间来帮助管理Android Studio,这样开发框架就不会传输运行时版本的属性到最终构建。

看似Android开发人员只有一种方法来检查成品布局——在设备上运行它。但是,你还可以使用内置于开发框架的Tools Attributes,在我们的例子中所使用的框架是Android Studio。

Tools Attributes的两个主要类别:

  • Lint Attributes

  • Design Attributes

作为一个静态分析工具,Lint被用于很多编程语言和软件平台。应用Lint Attributes有助于协调Lint工作。

下面是一些具体的Lint Attributes:

tools:ignore

tools:ignore属性允许你建立Lint工具来禁止XML文件中特定属性的警告。例如:


从根本上说tools:ignore类似于Java的@SupressWarning注解。

tools:targetApi

tools:targetApi和@TargetApi注解的工作方式相同,它显示了app将使用的最低API版本。举个例子,如果你正在应用Android KitKat,并且项目中最低的API版本是21。在这种情况下,你只要在代码中写下tools:targetApi以及适合的版本号即可。这可以避免恼人的Lint警告。

tools:locale

这个属性可以帮助你配置语言,并关闭关于错误拼写的Lint警告。例如,如果你的字符串仅包含西班牙文本,那么你可以设置“西班牙语为默认”:


这样,你就将西班牙语设置为默认语言,并且会检查西班牙语的拼写。

至于Design Attributes,可以大大便利创建开发框架中的XML布局。

Design Attributes包括:

tools:context

tools:context可用来显示开发框架选择什么活动类来实施布局。使用这个属性,Android Studio会自动选择所需的主题用于预览。

tools:showIn

tools:showIn有助于指出想要哪个布局在预览中显示。例如:


用来包括布局。通过这样做,开发人员就告诉了框架在哪个地方inflate什么特定布局。

tools:listitem, listheader, listfooter

你可以轻松地用特定布局调整组件视图,以便于分开list、header和footer的元素。例如:

tools:layout

使用tools:layout属性,可以在运行时屏幕上显示片段标签布局:


因此,Tools Attributes可以帮助开发人员确保他们总是能够远离在最终app构建中显示临时文本的风险。

2.Support Annotations

任务:在编译前检查代码中的可能错误,并且为了防止错误,对代码做一个全面的审查。

解决方案:Android Support Library

Android Support Library Annotations可以帮助Android Studio提升代码。它从Android Studio 1.3.0开始有用。对于之前的版本,你需要单独插入注解。

Android Support Annotations Library允许你在开发下找app中的bug。添加注解到项目,开发人员就可以让保持纯代码的任务变得更容易。

Support Annotations可分为:

  • Nullness Annotations

  • @Nullable, @NonNull

Nullness Annotations的目的是检查null。它们可被应用于代码字段,参数和方法。使用这些完全没有注解的注解的主要区别在于,Nullness Annotations只定义变量是否具有“null”值。

  • Resource Annotations

  • @StringRes, @DrawableRes, @ColorRes

在编码时,移动开发者经常引用字符串、图像等资源。使用Resource Annotations可以强制输入的文本。例如,通过添加resource annotation @ColorRes,当你试图输入颜色代码,而不是引用resource ID的时候,就会得到框架警告。没有注解,IDE就不反应,因为代码以及resource ID的引用的期望类型为int。

  • ColorInt Annotations

  • @ColorInt

@ColorInt是@ColorRes的相反注解。在这种情况下,你定义方法不引用resource ID,而是引用具体的颜色。应用@ColorInt Annotations可以让你快速找到错误,如果方法呼吁颜色资源ID的话。

  • Thread Annotations

  • @UiThread,@MainThread,@WorkerThread,@BinderThread

这些注解的目的是确定方法和特定类型的线程之间的连接。

  • Value Constraint Annotations

  • @Size(min = 5), @IntRange(from = 0, to = 12), @FloatRange(…)

在编码时使用参数的正常值几乎是不可能的。要定义可能的值的范围,你可以添加@IntRange或@FloatRange注解。如果你想限制数据数组、集合或线程中字符串的大小或长度,那么@Size注解将是一个极好的工具。

  • Permission Annotations

  • @RequestPremission(Manifest.permission.ACCESS_FINE_LOCATION)

使用Permission Annotations,你可以验证一个权限或一列权限。每当app引用方法时,它会提供确认,并且这列权限对你开放。如果权限不存在,你会在代码中发现错误。

  • CallSuper Annotations

  • @CallSuper

当你需要调用方法的super实现时可以使用这个注解。

  • Enumerated Annotations

  • IntDef和StringDef

这种类型的注释允许创建用于替换一些枚举常数值的广义定义。例如,你有IceCreamFlavourManager类,它包括3个模式:VANILLA(香草),CHOCOLATE(巧克力)和STRAWBERRY(草莓)。使用@IntDef,你就可以创建一个名为@Flavour的新的注释并定义它的具体数值。

3.Cut&Slice me

任务:接收位图图形所有显示分辨率的选项。

解决办法:Photoshop插件Cut&Slice me

Cut&Slice me仅允许通过按下一个按钮来生成位图图形的切割。它用于实施所有显示分辨率和状态(启用,禁用,按下)。对于Android,resource会被自动传送到不同的文件夹(drawable-xxhdpi, drawable-xhdpi,..),对于iOS,正确的名称前缀会被创建((@2x, @3x)。

我们从2013年开始活跃地使用插件Cut&Slice me。并且它在Android以及iOS开发人员中很受欢迎。

4. LeakCanary

任务:及时检测内存泄漏以防止OutOfMemoryError崩溃,并降低app内存溢出的风险。

解决方案:库LeakCanary

LeakCanary有助于在调试构建运行时检测内存泄漏,并提供舒适的UI用于堆栈跟踪历史。

大多数时候,开发人员必须手动查找内存泄漏。首先,他们要揭开OutOfMemoryError崩溃。然后使用不同的设备,他们尝试重现可导致错误的问题。此外,他们希望能够跟随会导致泄漏的操作的序列。他们创造了内存转储,并详细研究以发现应该垃圾回收的对象。然后,他们制作从对象到垃圾回收的最短引用路径,并且最后,他们得到激起内存泄漏的引用。

LeakCanary允许自动化所有的搜索研究,并能很快找到所有的泄漏。还有一个附加优点涉及到发送有关于泄漏的数据到服务器,并排除反射引用和来自于方法的特定活动。

总之,我们可以说,Android开发者有各种不同的工具可用于促进app开发过程。特别是,对于移动开发人员,还存在着一系列被遗忘或甚至是不知道的解决方案,如Tools Attributes,Support Annotations, Cut&Slice me,LeakCanary,以及bug reporting systems。关于最后那个提到的工具,我们将在以后深入探讨。选择什么工具主要取决于开发人员个人的喜好和具体的项目情况。

如果你愿意告诉我你认为必须拥有的工具,那么非常欢迎在评论中畅所欲言。期待听到不同的声音。

祝大家都能代码整洁,项目成功!