背景
我使用两种口味和5种密度分割为我的应用构建了10个APK:
productFlavors {
flavorA {
...
}
flavorB {
...
}
}
// Builds APKs for mdpi, hdpi, xhdpi, xxhdpi, and universal
splits {
density {
enable true
exclude "ldpi", "xxxhdpi"
}
}
每个APK都会获得一个唯一的版本代码。每个APK只包含一个与所需目标密度匹配的可绘制文件夹。
在Play商店开发者控制台中创建新版本后,所有APK都已成功上传。在查看发布时继续向前显示以下错误消息:
完全投影的APK PROBLEM
此APK不会向任何用户投放 因为它被一个或多个具有更高的APK完全遮蔽 版本代码。解决方案从您的发布或评论中删除此APK 您要包含的APK的定位和版本代码 这个版本。
在APK上运行aapt会显示所有目标屏幕和密度都相同:
支持屏幕:'小' '正常' '大' ' XLARGE'
支持 - 任何密度:' true'
密度:' 160' ' 240' ' 320' ' 360' ' 65534'
值得一提的是,清单文件中没有明确设置上述任何内容。
问题
我期待每个密度分割APK自动添加Google Play filter,但似乎并非如此。这是我需要手动完成的事情,如果是这样的话怎么办?我无法在文档中找到解释它应该如何工作的任何内容。或者我只是错过了其他的东西?
答案 0 :(得分:0)
splits {
density {
enable true
exclude "ldpi", "xxxhdpi" //IMPORTANT: only if you want to exclude some density
compatibleScreens 'small', 'normal', 'large', 'xlarge' // IMPORTANT: all supported by your application
}
}
答案 1 :(得分:-1)
事实证明,您必须包含compatibleScreens
才能将正确的过滤器添加到清单文件中。更新构建脚本看起来像这样可以解决问题:
splits {
density {
enable true
// Optional: Exclude any screen densities your app doesn't support
exclude "ldpi", "xxxhdpi"
// Add all screen sizes your app supports (mine is a wearable app)
compatibleScreens 'small'
}
}
在新的APK上运行aapt会产生与之前相同的输出,但Play商店不再抱怨阴影。您还会看到类似
的内容Screen layouts: small@hdpi
在Google Play控制台的APK详细信息下。