我正在 Play 商店中发布我的应用程序,但我不希望它适用于平板电脑。 我怎样才能实现它?
我不想手动排除 Android 开发者控制台中的每一个平板电脑,但我确实需要我的应用程序只在智能手机上运行。
编辑: 我按照你的建议做了,但结果是这样的:
为了进一步解释:我需要我的应用程序在普通人称为智能手机的设备上运行,而不是在普通人称为平板电脑的设备上运行......例如它必须在“Galaxy Note 2”上运行,但不能在“Galaxy Tab”上运行
已解决感谢@CommonsWare:
我必须在清单中设置以下标签:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="9"/>
和:
<compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
<!-- all large size screens -->
<screen android:screenSize="large" android:screenDensity="ldpi" />
<screen android:screenSize="large" android:screenDensity="mdpi" />
<screen android:screenSize="large" android:screenDensity="hdpi" />
<screen android:screenSize="large" android:screenDensity="xhdpi" />
</compatible-screens>
并执行以下操作: 右键单击项目 -> 属性 -> android -> 选择大于 8 的目标
http://developer.android.com/guide/practices/screens-distribution.html#FilteringHansetApps
...您可以使用该元素根据屏幕尺寸和密度的组合来管理应用程序的分发。 Google Play 等外部服务使用此信息对您的应用程序进行过滤,以便只有具有您声明兼容的屏幕配置的设备才能下载您的应用程序。
该页面中的示例
<compatible-screens>
元素:
<manifest ... >
<compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
</compatible-screens>
...
<application ... >
...
<application>
</manifest>
但是,我建议还添加密度为
xxhdpi
的线路,因为此类设备现已发货(Droid DNA、Xperia Z、HTC Butterfly 等)。
更新
首先,关于您的构建错误,如果您阅读<compatible-screens>
元素的文档,您会注意到它是在API级别9中添加的,并且出于某种奇怪的原因,您的构建目标设置得比该版本更旧. 第二,关于:
我需要我的应用程序在普通人称为智能手机的设备上运行,而不是在普通人称为平板电脑的设备上运行......例如它必须在“Galaxy Note 2”上运行,但不能在“Galaxy Tab”上运行这是不可能的,因为您对自己的工作没有具体的定义,并且不希望您的应用程序继续发布。
地球上大约有 80 亿“正常人”。欢迎您采访他们每一个人,询问他们对 Galaxy Note 2 的看法。有人会说电话。有人会说平板电脑。有人会说“平板手机”,这没什么用。有些人会把你赶出他们的家,声称你把一些发光的恶魔带到了他们中间(这也没有用,如果他们手头有石头可以扔,可能会很痛苦)。
如果在未来的某个时间点,您对自己所做的事情和不想运送设备的事情有了一个科学的定义,请提出一个新的 StackOverflow 问题。我所说的“科学定义”是指一种可以被所有设备上的所有人普遍应用的算法,以确定您希望您的应用程序做什么和不做什么。
(请注意,我所说的“所有人”,不包括那些可能认为你是恶魔贩子的人)
例如:
错误的方法。始终使用 <compatible-screens>
使您的应用程序无法在平板电脑上使用。
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="false"
android:xlargeScreens="false"
android:resizeable="false" />
注意
如果您使用上述场景的元素 (当您的应用程序不兼容更大的屏幕时)并设置 较大的屏幕尺寸属性为“false”,则外部服务 例如 Google Play 不应用过滤。您的申请将 仍然可以用于更大的屏幕,但是当它运行时,它不会 调整大小以适合屏幕。相反,系统将模拟手机 屏幕尺寸(约 320dp x 480dp;请参阅屏幕兼容模式了解 更多信息)。如果您想防止您的应用程序被 在更大的屏幕上下载,按照使用标签排除您的应用程序在平板电脑上运行。@CommonsWare的建议使用。
<compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
</compatible-screens>
<uses-feature android:name="android.hardware.telephony" required="true"/>
来源(https://paramsen.github.io/exclude-tablets/)
我能够包括这些较新的手机,同时仍然排除平板电脑,因为假设手机具有更高的像素密度,而平板电脑通常具有较低的像素密度。今天确实如此,但将来并不能保证,因此希望 Google 尽快以更好的方式解决这个问题。
<compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi" />
<screen android:screenSize="small" android:screenDensity="xxhdpi" />
<screen android:screenSize="small" android:screenDensity="xxxhdpi" />
<screen android:screenSize="small" android:screenDensity="360" />
<screen android:screenSize="small" android:screenDensity="420" />
<screen android:screenSize="small" android:screenDensity="480" />
<screen android:screenSize="small" android:screenDensity="560" />
<screen android:screenSize="small" android:screenDensity="640" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
<screen android:screenSize="normal" android:screenDensity="xxhdpi" />
<screen android:screenSize="normal" android:screenDensity="xxxhdpi" />
<screen android:screenSize="normal" android:screenDensity="360" />
<screen android:screenSize="normal" android:screenDensity="420" />
<screen android:screenSize="normal" android:screenDensity="480" />
<screen android:screenSize="normal" android:screenDensity="560" />
<screen android:screenSize="normal" android:screenDensity="640" />
<!-- phones only with large size screens -->
<screen android:screenSize="large" android:screenDensity="xxhdpi" />
<screen android:screenSize="large" android:screenDensity="xxxhdpi" />
<screen android:screenSize="large" android:screenDensity="420" />
<screen android:screenSize="large" android:screenDensity="480" />
<screen android:screenSize="large" android:screenDensity="560" />
<screen android:screenSize="large" android:screenDensity="640" />