При генерации плотности расщепления Gradle работают нормально для названных плотностей (например, xxxhdpi
). Я еще не нашел способ создать разделение плотности для некоторых различных плотностей, таких как 560dpi или 420dpi (например, для Google Pixel 3XL).
Вот как я генерирую ABI + разбиения плотности
// ABI Splits related code
splits {
// Configures multiple APKs based on Application Binary Interfaces (ABI)
abi {
enable true // enables the ABIs split mechanism
reset() // Clears the default list from all ABIs to no ABIs
include 'arm64-v8a', 'armeabi-v7a', 'x86', "x86_64" // Spcifies a list of ABIs Gradle should createa APKs for.
universalApk false // false to skip generting the universal APK
}
// Configures multiple APKs based on screen density.
density {
enable true
reset() // Clears the default list from all densities to no denstities
include "mdpi", "hdpi", "ldpi", "xhdpi", "xxhdpi", "xxxhdpi" // Specifies a list of screen densities Gradle should create multiple APKs for.
compatibleScreens 'small', 'normal', 'large', 'xlarge' // Specifies a list of compatible screen size settings for the manifest.
}
}
А затем я создаю разные версии для сгенерированных APK.
project.ext.abiCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, "x86_64": 4].withDefault{0}
project.ext.densityCodes = ["mdpi": 10, 'hdpi': 20, 'xhdpi': 30, "xxhdpi": 40, "xxxhdpi": 50, "ldpi": 60].withDefault{0}
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def baseAbiVersionCode = project.ext.abiCodes.get(output.getFilter("ABI"), 0)
def baseDensityVersionCode = project.ext.densityCodes.get(output.getFilter("DENSITY"), 0)
if (baseAbiVersionCode != null) {
output.versionCodeOverride = ((baseDensityVersionCode + baseAbiVersionCode) * 100000) + variant.versionCode
}
}
}
Однако, с учетом вышеизложенного, некоторые новые устройства, использующие плотности, например 560dpi, помечаются как не поддерживаемые. Универсальный APK для меня не go, так как я бью максимальный размер APK (и я не могу использовать файлы расширений).
Есть какие-нибудь идеи о том, как создать разделение плотности для этих неназванных плотностей?