【问题标题】:App not compatible with Nexus7 running Marshmallow应用程序与运行 Marshmallow 的 Nexus7 不兼容
【发布时间】:2015-12-21 04:21:57
【问题描述】:

我的应用正在进行 BETA 测试。它与 iBall 平板电脑(平板电脑具有 sim 卡功能)和运行 Marshmallow 的 Nexus5 兼容,但与运行 Marshmallow 的 Nexus7 不兼容(也与 Nexus10 兼容。我还没有检查过)。我不确定是哪个权限导致了这种情况。还是因为targetSdkVersion? (我认为不是 targetSdkVersion 造成的。如果我错了,请纠正我)

清单

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <uses-feature android:name="android.permission.RECEIVE_SMS" android:required="false" />
    <uses-feature android:name="android.permission.READ_SMS" android:required="false" />
    <uses-feature android:name="android.permission.READ_PHONE_STATE" android:required="false" />

    <permission
        android:name="in.company.company.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="in.company.company.permission.C2D_MESSAGE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <supports-screens
        android:anyDensity="true"
        android:xlargeScreens="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true" />

build.gradle

    compileSdkVersion 23
    buildToolsVersion '23.0.1'

    defaultConfig {
        applicationId "in.company.company"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 8
        versionName "1.7"
        multiDexEnabled true
    }

另外,我没有在开发者控制台上上传任何平板电脑屏幕截图。目前,该应用程序是为手机设计的,但我想让它适用于所有的安卓设备。我需要调查什么?

提前致谢。

【问题讨论】:

  • 你的编译SDK版本和目标SDK版本不同。你能把它改成一样试试吗?
  • @JayakrishnanSalim : 应用与运行 Marshmallow 的 Nexus5 兼容。
  • 您可以尝试删除支持屏幕部分吗?如果您允许所有设备,则没有必要。
  • @Christopher:没有帮助。
  • 你有本机代码部分吗?还是使用本机组件的库?您是否有任何依赖项会在构建期间向您的清单添加更多 部分?您可以从清单中删除 部分吗?也许 required-tag 会被忽略?

标签: android


【解决方案1】:

可能是您的平板电脑不支持手机等某些功能。这就是为什么它与权限冲突的原因。 它就像

<!-- features -->
<uses-feature android:name="android.hardware.telephony"  android:required="false" />

其他可能的功能是:

android.hardware.camera

android.hardware.camera.autofocus

android.hardware.location.gps

android.hardware.location

android.hardware.location.network

您可以在您的应用程序中check all the Features Required

【讨论】:

  • 我看到这被否决了,但我确实认为这是问题所在。我有一个包含 SMS 的应用程序,并且必须使用这个确切的 标签才能在非电话设备上工作。
【解决方案2】:

只需将此requiresSmallestWidthDp 添加到supports-screens 元素中即可。

例如,典型手机屏幕的最小宽度为 320dp,7 英寸平板电脑的最小宽度为 600dp,10 英寸平板电脑的最小宽度为 720dp。这些值通常是最小宽度,因为它们是屏幕可用空间的最短尺寸。

<supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:requiresSmallestWidthDp="720"
        android:resizeable="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

阅读更多关于support-screen

如果您使用 API 23 编译代码,那么为什么要使用 targetSdkVersion 21 将其更改为 23。(目标 23 API 时不要忘记为您的应用实现权限模型)

注意:如果您要使应用程序可用于所有 android 设备,那么您必须使用此 supports-screens 元素,否则 Google Play 会显示您“应用程序与此设备不兼容” em> 或类似的消息。检查一些与平板电脑屏幕相关的旧answer

【讨论】:

  • 如果我不使用requiresSmallestWidthDp,默认情况下它应该可用于所有设备.. 对吗?另外,我现在不打算在我的应用程序中实现 Marshmallow 权限系统,这就是为什么我使用targetSdkVersion 作为21。我不认为它应该对这个问题负责,因为该应用与运行 Marshmallow 的 Nexus5 兼容。
  • 不,当在 google play 上上传应用程序支持时,兼容设备需要屏幕参数。如果您不打算使用 support-screens 元素,则某些 nexus 设备不支持您的应用程序。 Google play 显示“应用与此设备不兼容”
猜你喜欢
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2018-01-22
  • 2021-11-12
  • 1970-01-01
相关资源
最近更新 更多