如何使用矢量绘图发布仅限平板电脑的 Android 应用程序
Posted
技术标签:
【中文标题】如何使用矢量绘图发布仅限平板电脑的 Android 应用程序【英文标题】:How to publish tablet only Android app with vector drawables 【发布时间】:2017-05-03 03:22:36 【问题描述】:我创建了仅针对平板设备的 android 应用程序。在 AndroidManifest 中,我设置了以下屏幕支持:
<supports-screens
android:largeScreens="true"
android:normalScreens="false"
android:requiresSmallestWidthDp="600"
android:smallScreens="false"
android:xlargeScreens="true" />
我的所有图形都是矢量,因此 XML 文件直接放在 drawable
目录中。只有位图是启动器图标,如下所示:
res\mipmap-hdpi\ic_launcher.png
res\mipmap-xxhdpi\ic_launcher.png
res\mipmap-xhdpi\ic_launcher.png
res\mipmap-xxxhdpi\ic_launcher.png
res\mipmap-mdpi\ic_launcher.png
在开发者控制台中,我收到一条警告,提示我的应用程序不是为平板电脑正确设计的“使用为平板电脑屏幕设计的资产”。
我尝试添加mipmap-large-mdpi\ic_launcher.png
和mipmap-xlarge-mdpi\ic_launcher.png
,但对警告没有影响。
我该怎么做才能让我的应用程序适合平板电脑?
【问题讨论】:
您找到解决方案了吗?这似乎是 Google 的疏忽。 目前运气不佳。 你试过我的答案了吗?成功了吗! 您是否尝试过在“drawable-sw600dp”之类的文件夹中添加所有 vactor 可绘制对象? 创建一个没有在项目中使用的fake png drawable并放入drawble文件夹mdpi、hdpi、xhdpi、xxhdpi。 【参考方案1】:同一应用始终适用于手机和平板电脑。 手机和平板电脑是同一类。但Android TV、可穿戴设备是不同的类别。 Google Developer Console 要求您提供平板电脑屏幕图像,因为平板电脑需要相对较大的图像。这些图像是位图。因此,您必须在发布 Apk 时为平板电脑提供位图图像。
因为 VectorAsset 在每个密度(大小)屏幕中看起来都一样。但是对于位图(例如,ic_launcher.png、Action Bar & Tab Icon、Notification 图标),应该使用Android Studio Asset Manager 进行适当的设计。
“使用专为平板电脑屏幕设计的资产”是明确说明的问题。因此,使用 Android Studio Asset Manager 生成所有位图。
例如,生成(替换您的启动器图标):右键单击 ic_launcher.png" 包 > 新建 > 图像资源 > 将资源类型更改为图像 > 然后完成 ....
下图更清楚。
注意:您不需要AndroidManifest.xml
中的以下行。您可以删除整个 <supports-screens />
块。
<supports-screens
android:largeScreens="true"
android:normalScreens="false"
android:requiresSmallestWidthDp="600"
android:smallScreens="false"
android:xlargeScreens="true" />
【讨论】:
在使用矢量图像时这不是必需的,它们的全部意义在于,您不需要多个图像来处理多个密度。 @DrBreakalot,请阅读Since VectorAssets look the same in every density (size) screens
这一行【参考方案2】:
要让您的应用仅针对在 Google-Play 中运行 ICS 的平板电脑进行过滤,您可以在 AndroidManifest 中执行此操作:
<supports-screens
android:largeScreens="true"
android:normalScreens="false"
android:requiresSmallestWidthDp="600"
android:smallScreens="false"
android:xlargeScreens="true" />
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
要获得 HoneyComb 平板电脑,您只需更改您的 minSdk
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="14" />
【讨论】:
定位到 14 的原因是什么? 最新版本可能不支持资产。但是14版本有完美稳定的固件。可用于检查是否存在兼容性问题 例如,由于某些应用可能只支持 minSdkVersion='21',这不是一个很好的解决方案 确实如此。但是需要检查是apk的问题还是play console的问题。所以我建议了这个!【参考方案3】:如果您认为它不适用于您,唯一的解决方案是向 Google 申诉。所有其他解决方案都是不必要的解决方法。
您可以联系 Google 就“专为平板电脑设计”的问题提出申诉:https://support.google.com/googleplay/android-developer/contact/tabletq
【讨论】:
【参考方案4】:`android:largeScreens="true"`
到
`android:largeScreens="false"`
如Here 中的Declaring an App is Only for Tablets 所述,带有
Caution:
如果您将该元素用于相反的场景(当您的应用程序与大屏幕不兼容时)并将大屏幕尺寸属性设置为“false”,则 Google Play 等外部服务不会应用过滤。 您的应用程序仍可用于较大的屏幕,但在运行时,它不会调整大小以适应屏幕。相反,系统将模拟手机屏幕尺寸(大约 320dp x 480dp;有关更多信息,请参阅屏幕兼容模式)。如果您想阻止您的应用程序在更大的屏幕上下载,请使用 ,如上一节有关声明应用程序仅适用于手机的部分所述。
祝你好运,希望这项工作适合你。
【讨论】:
以上是关于如何使用矢量绘图发布仅限平板电脑的 Android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
app:srcCompat - 矢量绘图显示在设计预览中,但不显示在应用程序中