美文网首页
Android 自定义lint规则 打包aar

Android 自定义lint规则 打包aar

作者: 星辰大海TT | 来源:发表于2020-06-16 08:41 被阅读0次

    关于自定义lint的开发, 不是本文的重点, 网上有很多相关的博客文章,推荐几篇
    Android Studio 工具:Lint 代码扫描工具(含自定义lint)

    Android自定义Lint实践

    本文主要讨论写好的自定义lint.jar如何使用。

    主要有两种方案:

    1、google的自定义方案

    http://tools.android.com/tips...

    这个是google的官方解决方案,需要将写好的lint.jar拷贝到开发人员机器中的.android/lint文件夹下,再下一次运行Android Studio时,AS会检测其内的jar文件。

    缺点:开发人员的机器上所有的Android工程都会受到影响,而且每个开发人员都需要拷贝到自己的机器上。

    2、LinkedIn方案

    https://engineering.linkedin....

    LinkedIn提供了另一种思路 : 将lint.jar放到一个aar中。将需要lint检测的项目中引入这个aar,仅对当前工程有效。

    google 的官方文档也提到过aar中可以包含lint.jar。https://developer.android.com/studio/projects/android-library.html#aar-contents

    如图所示:

    Screenshot from 2020-06-15 11-15-02.png

    但是google没有给出aar如何包含jar的具体步骤。

    2.1、LinkedIn方案具体步骤

    需要我们建一个Java library和Android library。Java library是我们定义的lint规则,Android library是我们定义的空的android library,只为了打包aar。
    先看下完整的项目图:

    downloadfile (1).png

    如图所示:

    lint_library 是java-library,里面存放我们写的自定义lint的java类,编译后会生成lint.jar。

    lint_module_aar 是一个空的Android library,专门用来引入lint.jar并打包成aar。
    (文末附demo地址)

    Android Gradle Plugin 3.4.0 之前打包

    打包lint.jar进aar需要在lint_module_aar这个模块的build.gradle进行配置,网上大多数文章都是这样配置,包括LinkedIn的官方文档:

    Screenshot from 2020-06-15 13-53-06.png

    这种写法在Android Gradle Plugin 3.4.0之前是可以的。

    Android Gradle Plugin 3.4.0 之后打包

    按照网上大部分资料的写法,发现打包出来的aar文件中并没有包含lint.jar,导致生成的aar文件无效。这个问题搞了好久(大坑啊)
    最后通过查阅google的官方文档,原来google在android gradle plugin 3.4.0之后用lintChecks不再支持将lint.jar打包进aar中。

    Screenshot from 2020-06-15 14-03-42.png

    https://developer.android.google.cn/studio/build/dependencies

    就是说android gradle plugin 3.4.0之后,需要使用lintPublish, 而不能用lintChecks。

    lintPublish的使用很简单,Google文档上也给出了示例:

    只需在dependencies下使用lintPublish即可。

    lintPublish project(":lint_library")

    编译下lint_module_aar模块,可以发现在build/aar 目录下生成了aar文件,解压缩后可以看到里面包含了lint.jar。


    Screenshot from 2020-06-15 15-56-33.png

    2.2、使用AAR文件

    有本地依赖或者上传远程仓库,这里只介绍本地依赖。将上小结生成的AAR文件拷贝在app的libs文件夹。并配置app组件的build.gradle

    
    dependencies {
     implementation (name:'lnt_module_aar', ext:'aar')
    }
    
    

    到这里,就能使用自定义的lint规则了。如果不生效,重启Android Studio看看。

    附上:

    demo Github地址:https://github.com/wxkly8888/Android_lint_sample/

    相关文章

      网友评论

          本文标题:Android 自定义lint规则 打包aar

          本文链接:https://www.haomeiwen.com/subject/imyuohtx.html