androidlint
A. Android-Lint 检查有关问题列表怎么解决
定制Android-Lint检查问题的现有规则
对Android-Lint发现的问题进行处理。可定制项目中采用的规则。
Android-Lint检查问题列表
Android SDK Tools / ADT 20.0.3中所支持的默认检查的所有问题。
有英文版本和中文版本。英文版本从Android-Lint中直接导出;中文版本还不完整,对每一条的解释会逐步完善。
Android SDK自带的APIDemo用Android-Lint检查一下,也还报了很多的问题。
一、忽略XML文件中的问题
1.1 MissingPrefix问题
Layout的device_admin_sample.xml文件中定义了下面的Button
[html] view plainprint?
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password">
</Button>执行Android-Lint就会报MissingPrefix警告:
1.2 解决XML中的问题
可以在Lint Warnings View中解决(图中图标从左至右顺序)
Suppress this error with an annotation/attribute
点击该图标之后,直接更改了device_admin_sample.xml文件:
[html] view plainprint?
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>
<Button
android:id="@+id/set_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android_layout_gravity="east|center_vertical"
android:text="@string/set_password"
tools:ignore="MissingPrefix" >
</Button>XML文件中直接增加了tools:ignore="MissingPrefix"。
Ignore in this file
在本文件中忽略,而在别的文件中仍然出现。
Ignore in this project
当前项目中都忽略该Issue。
执行之后,在本项目根目录下创建了lint.xml的文件,内容为:
[html] view plainprint?
<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint>
<?xml version="1.0"encoding="UTF-8"?>
<lint>
<issue id="MissingPrefix"severity="ignore" />
</lint> Always ignore
所有项目中都忽略。
[TIPS#1] Ignore in this project和 Always ignore操作,同执行Lint Warnings View中的最后一个Icon -- Options…,然后配置某一个项目或者全局设置中该Issue的Severity为ignore。
[TIPS#2] Eclipse中的实现有BUG,有时设置了这些Ignore操作,即便立即执行检查也不一定生效,需要重启Eclipse。
二、解决Java代码中的问题
2.1 NewAPI问题
APIDemo中指明了支持最低API-1,但是代码里却用了API-3的接口,执行Lint会报错:
2.2 解决问题
把光标放在报错代码处,会自动提示如何快速fix。
1. 前面红色圆角框内是用Javaannotation方式解决(API-16之后才有):@SuppressLint‘<IssueId>’或@TargetAPI(<api>)
@SuppressLint ‘<IssueId>’用来忽略<IssueId>。适用范围在所调用的方法处或整个类中。
@TargetAPI(<api>)用来指示API用给定的<api>,而不是项目中指定的。适用范围在所调用的方法处或整个类中。
2. 后面粉红色圆角框内同XML中解决方式——在本文件/ 本项目/ 全局范围内忽略检查。
三、命令行下解决问题
从上面Eclipse环境下的解决问题的方式知道,可以指定文件来定制Lint检查Issue的处理方式。
下面是一个lint.xml的例子:
[html] view plainprint?
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>
<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>
<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in thisproject -->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!-- Ignore the ObsoleteLayoutParamissue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>
<!-- Ignore the UselessLeaf issue inthe given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>
<!-- Change the severity of hardcodedstrings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>Lint.xml中关键是对issue(用id指定)的severity进行指定,并且可以指定该issue作用于指定的文件还是当前项目。
把lint.xml放在项目的根目录中,命令行执行lint时候,lint就会用lint.xml中的规则。
另外,执行lint时还可以用参数--config<fileName>指定一个全局的配置用于所有的项目。当项目中已有lint.xml,则对于某个issue而言,在lint.xml中没有对该issue特别定制的情况下,--config指定的文件<fileName>中的该issue的定制才起作用。
四、定制Lint检查的规则
Android-Lint有默认的检查和报错的规则,但通过上面的分析知道,可以在Eclipse或者命令行下改变这种规则,从而可以定制Lint检查的规则。
推荐定制的路线:
在Eclipse中基于现有的问题,逐个分析并解决,然后我们就能得到一个Eclipse自动生成的lint.xml这个定制文件;
然后这个lint.xml用于Eclipse和/或命令行下进行后续的检查;
后续发现的问题再进一步处理,逐步完善lint.xml这个定制文件。
当然,如果有足够的时间,完全也可以Review一遍Android-Lint已经支持的所有的Issue,对他们逐个进行定制。对这些Issue的 Review,也能加深对Android设计中问题解决和性能优化方法的理解。
B. 吉利智上博越androidlink连不上怎么办
插上数据线,然后设置里--->开发者选项-->USB链接;
用carplay或者Glink可以互联,车机本身有提示;
多看看说明书,不行就4s店里问问。
C. Android Studio 2.3 正式版发布,看看有什么新功能
Android Studio 2.3 正式版发布了!来看看我们的劳动工具 2.3 有什么新功能吧!
Instant Run
工具栏上增加了一个“闪电”的标志,原来的“Run”按钮(Shift+F10)会保持全量编译。新增的“闪电”按钮(Gradle 需要升级到 2.3.0)才是 Instant Run,会在程序保持运行的情况下替换代码。
Instant Run 的底层代码有很大的改进,消除了的启动延时。
模拟器支持和主机操作系统共享粘贴板,也就是可以互相复制粘贴了。需要使用 x86 Google API,并且 API 19(Android 4.4)以上的模拟器。
个人小结
Android Stuido 2.3 带来的改进还是挺多的。
首先,编译速度又快了一些,我把关掉的 Instant Run 又打开了(咦?我为什么要说又)。
作为习惯写xm代码的码农来说,估计还没怎么用过 ConstraintLayout。谷歌从 16 年开发者大会之后就一直在推 ConstraintLayout,这次连默认模板里面的布局都改成了 ConstraintLayout 了,感觉是时候要了解一下了。
关于 WebP 格式,官方说可以减少 25% 以上的容量。我随便找了一张图片转,居然只有原来 5% 的大小。如果项目里面用到的图片比较多,可以在很大程度上减小 apk 的大小。
说实话,之前没怎么用过 Lint 检查代码。一旦用上了,作为一名不允许有一根黄线存在的强迫症患者,感觉又多了一些工作量。