Android项目优化检测工具Lint

前言

我们在实现Android界面功能之外还需要考虑结构对性能、维护成本的影响。例如,如果 XML 资源文件包含未使用的命名空间,则不仅占用空间,还会导致不必要的额外处理。其他结构问题,例如使用目标 API 版本不支持的已弃用的元素或 API 调用等,可能导致代码无法正常运行。Android Studio 提供一个名为 Lint 的代码扫描工具,可帮助您发现并纠正代码结构质量的问题,而无需实际执行该应用,也不必编写测试用例。

Lint工作流程

该工具会报告其检测到的每个问题并提供该问题的描述消息和严重级别,以便您可以快速确定需要优先进行哪些关键改进。此外,您可以调低问题的严重级别,忽略与项目无关的问题,也可以调高严重级别,以突出特定问题。

Lint 工具可检查您的 Android 项目源文件是否包含潜在错误,以及在正确性、安全性、性能、易用性、便利性和国际化方面是否需要优化改进。

Lint 工具的代码扫描工作流

可以看到源文件(包括Java和XML)、图标、配置文件等,通过 lint.xml 中的问题严重级别配置,然后执行 Lint 命令工具对代码静态扫码。

Android开发中的一些技巧

前言

我们在开发过程中有时候会遇到一些比较棘手的问题,经过不懈搜索后发现原来是这么简单,自己却想的异常复杂,这些知识需要归纳整理起来方便大家使用,所以你有什么好的技巧也分享出来吧。

EditText不自动获取焦点

问题描述:有时候EditText会自动获取焦点,导致软键盘直接跳出。有时候这么做很方便,但是大部分时候我们还是希望在点击EditText的时候软键盘才弹出来。

解决方法:在EditText的父Layout中,加入下面的两个属性。

1
2
android:focusable="true"
android:focusableInTouchMode="true"

负dp布局

问题描述:有时候需要做提示小圆点,方式有很多,但是这个方式也是比较简单的一种。

1
2
android:layout_marginTop="-3dp"
android:layout_marginRight="-3dp"

运行时忽略

问题描述:很多时候我们在写xml界面的时候需要预览数据,但是数据又不能在实际运行中被显示出来。

在跟布局中添加:

1
xmlns:tools="http://schemas.android.com/tools"

然后使用 tools: 开头的属性:

1
tools:text="测试内容"

或者使用 layout_widthlayout_height 来约定适配器item的宽度和高度。

1
2
tools:layout_height="370pt"
tools:layout_width="220pt"

还有种情况也很实用,就是使用 showIn 属性将item布局预览展示到某个布局内部。

1
tools:showIn="@layout/activity_main"

发布Android项目到JCenter仓库

注册

为什么将注册单独拿出来说呢?因为这里有两个坑,不要第一步就死翘翘了。

Bintray的基本功能类似于Maven Central,一样的我们需要一个账号,点这里注册,注册前切记两件事情。

Bintray注册界面

  1. 一定要点击右边的For an Open Source Account Sign Up Here而不是左边的绿色按钮。
  2. 不管你选择新注册还是用第三方登录,如果你的邮箱是QQ或者163,都是不行的,建议用google邮箱注册。

再提醒一遍:bintary账号分为普通账号和开源账号,果然点击左边的绿色按钮,你注册的是普通账号,你就必须要加入或者创建组织才可以建立自己的仓库,关键是如果你点错了,你还删不了,非常麻烦。

Android Studio3.0依赖方式

Android Studio3.0正式版已经出来了,相比2.x的版本,编译速度提高了不少。
当我们使用AS3.0新建项目时会发现,默认的依赖由之前的compile更改为implementation了。

Android studio版本更新至3.0,更新中,连带着com.android.tools.build:gradle
工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。

下面我们来看看他们之前的差异:

2.x版本的依赖方式

在com.android.tools.build:gradle 3.0 以下版本依赖在gradle 中的声明写法

1
compile fileTree(dir: 'libs', include: ['*.jar'])

2.x中支持的依赖方式有:

  • Compile
  • Provided
  • APK
  • Test compile
  • Debug compile
  • Release compile

3.0版本的依赖方式

在3.0后的写法为

1
implementation fileTree(dir: 'libs', include: ['*.jar'])

1
api fileTree(dir: 'libs', include: ['*.jar'])

3.0中支持的依赖方式有:

  • API
  • Compile only
  • Runtime only
  • Unit Test implementation
  • Test implementation
  • Debug implementation
  • Release implementation

可以看到在Android studio3.0中,compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代,剩下的看名字就知道了。

Android Studio 3.0 Release新功能

Android Studio 3.0的Release版本终于发布了,赶快去更新吧

Mac Os的朋友注意了,在你更新旧版本的Android Studio的时候可能会遇到一个更新错误对话框,提示“Some conflicts were found in the installation area”。你忽略此错误就可以了并单击取消即可继续安装。

最新Gradle 3.0.0插件

最新的Gradle3.0.0插件改进和提升了很多功能,主要是提高了对具有大量modules的项目的构建性能,如果你的项目有大量的modules你可以尝试一下下面这些改变。

这个版本还包含下面特性

Kotlin的支持

google2017年的IO大会上Kotlin编程语言在Android上被正式支持。所以在这个版本中,Android Studio包含了Android开发的Kotlin语言支持。

你可以采用混合的方式,可以将一部分Java代码通过( Code > Convert Java File to Kotlin File)快捷键来转换成kotlin的代码,你也可以创建一个完全kotlin的工程。

Convert Java File to Kotlin File

Java 8语言特性支持

你现在可以使用某些Java 8语言功能,并使用Java 8来书写你的java代码了,Jack不再是必须的,你应该禁用掉Jack.

Android Studio 3.0配置Java 8

Android分析器

最新的Android分析器replaces the Android Monitor tool提供了一套新的工具来实时测量您的应用程序的CPU,内存和网络使用情况

通过View > Tool Windows > Android Profiler 打开面板

replaces the Android Monitor tool

CPU分析

关于详细的CPU使用情况分析传送门

replaces the Android Monitor tool

内存分析

可以帮助你找出内存泄漏问题,你查看实时内存变化,可以跟踪内存分配和回收情况,内存分析详细传送门

replaces the Android Monitor tool

网络请求分析

Network Profiler允许您监视应用程序的网络活动,检查每个网络请求的有效负载,并链接回生成网络请求的代码。

关于更多内存分析请看传送门

replaces the Android Monitor tool

Android Studio 实用小技巧

概述

一般的什么快捷键,技巧的文章也有很多。我也看过很多。下面这些事我在来自国外大神发布的:Android Studio Tips of the Day (https://plus.google.com/u/0/collection/wtO0PB) 查看到的,而且对于我来说有帮助的及没用过的。

Android Studio 快捷键

Android Studio Tips of the Day (https://plus.google.com/u/0/collection/wtO0PB) 里面一共有八十几个。大家可以去查看完整的。而且是持续更新状态中。很有用(记得安全上网,翻墙哦。)

Ajax Android AndroidStudio Animation Anroid Studio AppBarLayout Babel Banner Buffer Bulma ByteBuffer C++ C11 C89 C99 CDN CMYK COM1 COM2 CSS Camera Raw, 直方图 Chrome ContentProvider CoordinatorLayout C语言 DML DOM Dagger Dagger2 Darktable Demo Document DownloadManage ES2015 ESLint Element Error Exception Extensions File FileProvider Flow Fresco GCC Git GitHub GitLab Gradle Groovy HTML5 Handler HandlerThread Hexo Hybrid I/O IDEA IO ImageMagick IntelliJ Intellij Interpolator JCenter JNI JS Java JavaScript JsBridge Kotlin Lab Lambda Lifecycle Lint Linux Looper MQTT MVC MVP Maven MessageQueue Modbus Momentum MySQL NDK NIO NexT Next Nodejs ObjectAnimator Oracle VM Permission PhotoShop Physics Python RGB RS-232 RTU Remote-SSH Retrofit Runnable RxAndroid RxJava SE0 SSH Spring SpringBoot Statubar Task Theme Thread Tkinter UI UIKit UML VM virtualBox VS Code VUE ValueAnimator ViewPropertyAnimator Vue Web Web前端 Workbench api apk bookmark by关键字 compileOnly css c语言 databases demo hexo hotfix html iOS icarus implementation init jQuery javascript launchModel logo merge mvp offset photos pug query rxjava2 scss servlet shell svg tkinter tomcat transition unicode utf-8 vector virtual box vscode 七牛 下载 中介者模式 串口 临潼石榴 主题 书签 事件 享元模式 仓库 代理模式 位运算 依赖注入 修改,tables 光和色 内存 内核 内部分享 函数 函数式编程 分支 分析 创建 删除 动画 单例模式 压缩图片 发布 可空性 合并 同向性 后期 启动模式 命令 命令模式 响应式 响应式编程 图层 图床 图片压缩 图片处理 图片轮播 地球 域名 基础 增加 备忘录模式 外观模式 多线程 大爆炸 天气APP 太白山 头文件 奇点 字符串 字符集 存储引擎 宇宙 宏定义 实践 属性 属性动画 岐山擀面皮 岐山肉臊子 岐山香醋 工具 工厂模式 年终总结 开发技巧 异常 弱引用 恒星 打包 技巧 指针 插件 摄影 操作系统 攻略 故事 数据库 数据类型 数组 文件 新功能 旅行 旋转木马 时序图 时空 时间简史 曲线 杂谈 权限 枚举 架构 查询 标准库 标签选择器 样式 核心 框架 案例 桥接模式 检测工具 模块化 模板引擎 模板方法模式 油泼辣子 泛型 洛川苹果 浅色状态栏 源码 源码分析 瀑布流 热修复 版本 版本控制 状态栏 状态模式 生活 留言板 相册 相对论 眉县猕猴桃 知识点 码云 磁盘 科学 笔记 策略模式 类图 系统,发行版, GNU 索引 组件 组合模式 结构 结构体 编码 网易云信 网格布局 网站广播 网站通知 网络 美化 联合 膨胀的宇宙 自定义 自定义View 自定义插件 蒙版 虚拟 虚拟机 补码 补齐 表单 表达式 装饰模式 西安 观察者模式 规范 视图 视频 解耦器模式 设计 设计原则 设计模式 访问者模式 语法 责任链模式 贪吃蛇 转换 软件工程 软引用 运算符 迭代子模式 适配器模式 选择器 通信 通道 配置 链表 锐化 错误 键盘 闭包 降噪 陕西地方特产 面向对象 项目优化 项目构建 黑洞
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×