android: gradle 产品口味搞乱了 minSdkVersion

android: gradle product flavors messing up minSdkVersion

我有一个 Android 应用程序,最低 sdk 级别为 15,但从 15 到 18,我需要导入额外的库才能使其正常工作。

为此,我在 gradle 构建文件上使用 "flavor" 作为以下代码片段

   minSdkVersion 15
    targetSdkVersion 27
    versionCode 124
    versionName "3.4.2"
    multiDexEnabled true
    flavorDimensions "api"
    productFlavors {
        older {
            dimension "api"
            minSdkVersion 15
            maxSdkVersion 18
            versionCode 1 + android.defaultConfig.versionCode

        }
        newer {
            dimension "api"
            minSdkVersion 19
            versionCode android.defaultConfig.versionCode
        }
    }

事情是在添加这个风味特征之后 Android Studio 不允许我在模拟器 sdk 级别 15 - 18 上 运行 它。

但在它运行良好之前,我只是将 2 种口味分开,因为 "extra api" 需要让应用程序在旧版本中运行,这使得它的大小增加了一倍,所以我希望较新的智能手机避免这种情况额外开销

我怎样才能在模拟器上保持这两种风格的构建并且仍然运行?

也许不是你要找的答案,但我在 19 之前没有使用 min SDK。Ice Cream Sandwich (15) 于 2011 年问世。

如果放弃 SDK 18 及更低版本,您的应用只会额外损失 3.5% 的潜在用户。如果您的应用程序目前在商店中,您甚至可以查看平均使用您的应用程序的版本。话虽这么说,也许在您的具体情况下更重要的是迎合整个市场,即使是 SDK 19 以下的 3.8% 的用户。

Here is a list of version usage

转到

构建 -> Select构建变体...

一个看起来像这样的 window 应该出现在左侧边栏中:

使用下拉菜单 select older 风格。使用 window 右上角的按钮关闭它,然后再次尝试 运行。