问题 无法使用SDK构建工具21或更高版本过滤多个密度的资产


由于使用gradle插件1.3.0在发布模式下构建我的应用程序时出现问题,我已切换到1.4.0(beta 2),修复了所述构建问题。

但是,虽然某些风格完美构建,但其他风格的构建已中止,并显示以下错误消息:

无法使用SDK构建工具21或更高版本过滤多个密度的资产。请考虑使用apk拆分。

我没有找到任何关于上述句子的参考,我应该如何处理这些口味的资源,甚至为什么这个错误只出现在几种口味而不是所有口味中。

编辑:build.gradle

apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
        }
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig {
        applicationId "com.example.appname"
        minSdkVersion 8
        targetSdkVersion 23
        versionCode 1
        versionName '0.0.1'
    }
    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            minifyEnabled true
            zipAlignEnabled true
            signingConfig signingConfigs.config
        }
        debug {
            applicationIdSuffix 'debug'
            versionNameSuffix '_debug'
        }
    }
    flavorDimensions "googleplay"
    productFlavors {
        noplay {
            dimension "googleplay"
            versionCode Integer.parseInt(defaultConfig.versionCode + "0")
            buildConfigField "boolean", "HAS_GOOGLE_PLAY", "false"

            resConfigs "ldpi", "mdpi"
            // so far we are using the noplay flavor only for old devices, which do not have hidpi
        }
        play {
            dimension "googleplay"
            versionCode Integer.parseInt(defaultConfig.versionCode + "1")
            buildConfigField "boolean", "HAS_GOOGLE_PLAY", "true"
            minSdkVersion 9
        }
    }
}

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

    // Google Play services (analytics)
    playCompile 'com.google.android.gms:play-services-analytics:8.1.0'

    // ActionBar and support libraries
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:support-v4:23.0.1'
}

11626
2017-09-21 12:47


起源

发布build.gradle(不要忘记删除签名选项)。 - Eugen Pechanec
完成;谢谢你的时间。 - Jose Gómez
哪些变体失败?它总是一样的吗? - stkent
@stkent是的,总是相同的两个:noplayLocnetwPaid和noplayLocnetwKids。我建立的其他三个变种(即游戏*)正在建设中。 - Jose Gómez


答案:


resConfigs被替换为 APK拆分 密度和体系结构。请注意以下内容 句子

使用21以上的构建工具时,您还可以添加resConfigs   “nodpi”,“hdpi”也限制了打包的密度文件夹。   相反,使用apk拆分为设备提供不同的apks   不同的密度。

有一个 此问题的错误报告

必须删除违规的resConfigs,并且可以在其中使用apk拆分。

或者,切换到构建工具20.0.0似乎解决了这个问题。


11
2017-10-01 09:15



谢谢你的指针。有关apk拆分的更多信息: tools.android.com/tech-docs/new-build-system/user-guide/... 和 geeks.everything.me/2015/06/10/... - Jose Gómez
OMG - 一直在寻找证据,证明Splits突然停止工作!令人惊讶的是,由于这个没有任何警告或其他通知...... - slott