No se pueden filtrar los activos para densidades múltiples mediante herramientas de compilación SDK 21 o posterior
Debido a un problema de construcción de mi aplicación en modo de liberación con el gradle plugin 1.3.0, he cambiado a 1.4.0 (beta 2), que corrige dicho problema de construcción.
Sin embargo, mientras que algunos sabores construyen perfectamente, otros tienen su compilación abortada con el siguiente mensaje de error:
- Localización de recursos de cadena agregados a través de build.gradle usando "resValue"
- ¿Cómo puedo convertir los recursos de Android a una cadena. Eg .: android.R.string.cancel?
- Configuración de la imagen de fondo de la vista web a un gráfico de recursos en Android
- ¿Por qué Android no puede lidiar con el conflicto de nombres de recursos entre Project y Library?
- Android Studio: Creación de diseños de paisaje
No se pueden filtrar activos para densidades múltiples utilizando las herramientas de compilación SDK 21 o posterior. Considere el uso de apk splits en su lugar.
No he encontrado ninguna referencia a la frase anterior, ¿qué debo hacer con los recursos de estos sabores, o incluso por qué este error sólo aparece en un par de sabores y no en todos ellos.
Editar: 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' }
- Android: programaticamente setId es da una advertencia Esperado recurso de tipo id
- GetString fuera de un contexto o actividad
- ¿Cómo puedo asignar un ID a una vista mediante programación?
- Empaquetado de archivos de recursos de Android dentro de un archivo Jar distribuible
- R no se puede resolver - Error de Android
- Selección de recursos de Android y valores e inconsistencias
- ¿Cómo obtener un atributo en un recurso Drawable en Android?
- Cómo obtener Android String Array si tengo el nombre de Array en otro String
ResConfigs se sustituye por splits APK para densidades y arquitecturas. Observe la siguiente oración :
Cuando se utilizan herramientas de compilación mayores de 21 también se puede agregar resConfigs "nodpi", "hdpi" para limitar también las carpetas de densidad que se empaquetan. En su lugar, utilice apk splits para proporcionar diferentes apks a dispositivos con diferentes densidades.
Hay un informe de error para este problema .
Los resConfigs ofensivos tienen que ser removidos, y las divisiones de apk se pueden usar en su lugar.
Alternativamente, cambiar a build-tool 20.0.0 parece funcionar alrededor de este problema.
- ¿Se pueden combinar las cadenas de recursos de android en nuevas cadenas?
- Java 8 Stream API en Android N