Android Studio Lint - 为 lint 设置 API 级别

Android Studio Lint - set API level for lint

事情是这样的。我有一个与 API 15 及更高版本兼容的应用程序,但由于它非常大并且我已经达到 65k 方法限制,我不得不将它设为 MultiDexApplication class 的后代。 这会稍微减慢构建时间,所以我必须实施一些优化来加快这个过程。我的清单中有以下代码,这显着减少了构建 API >= 21 时的构建时间(取自其他一些 SO 线程):

    productFlavors {
        dev {
            minSdkVersion 21
        }
        prod {
            minSdkVersion 15
        }
    }

一切正常,但问题是在开发过程中,Android studio 认为我的 minSdkVersion SDK 级别是 21(正确),并且 lint 没有显示不兼容 API (15-21)。 我真正想要的是能够将 minSdkVersion 设置为 21(快速构建),但是将 "lint minSdkVersion" 设置为 15,所以我看到了与旧 API 不兼容的代码部分比 21。 我尝试 google 它并查看 AS lint 首选项,但我没有发现任何有用的东西。感谢您的任何建议。我目前的解决方案是将dev flavor中的minSdkVersion切换为21并检查是否有任何错误,但这并不是我想要的。

This gist 回答了你的问题。它展示了如何使用任何开发最小 SDK 值构建项目,同时为 Lint 警告保持生产最小 SDK 值。

总结post,可以动态计算minSdkVersion值:

int minSdk = hasProperty('devMinSdk') ? devMinSdk.toInteger() : 15
apply plugin: 'com.android.application'

android {
    ...
    defaultConfig {
        minSdkVersion minSdk
        ...
    }
}

在这个例子中,我们正在检查 devMinSdk 属性 是否已定义,如果为真 - 我们正在使用它。否则,我们默认为 15。

我们如何传递 devMinSdk 值来构建脚本?两个选项:

使用命令行:

./gradlew installDebug -PdevMinSdk=21

使用 Android Studio 首选项:

转到首选项(Windows上的设置)-> 构建、执行、部署 -> 编译器 -> 在命令行选项文本框中输入-PdevMinSdk=21