android - 如何理解为什么 "Android app is incompatible with some specific devices"

标签 android google-play incompatibility

我在 Google Play 中的应用对某些设备不可见,无论其 Android 版本如何。有什么方法可以通过 Android Studio 或 Google Android Developer Console 了解为什么我的应用程序与 Brand X 设备不兼容?

例如;

  • 华为 P9 Android 6.0 OK

  • 华为 P9 Lite Android 6.0 失败

  • LG G5 - Android 7.0 OK
  • Android ONE - Android 7.1.1 失败

我检查了之前输入的问题/答案,了解到原因可能是以下之一;

  1. android:required="false" should be used for several uses-features .
  2. > Could be related to application size.

我真正想知道的是了解它与特定设备不兼容的原因。不过,我会尝试这些建议并分享结果。

我的 list 文件如下;

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.2" package="com.apps.appname" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
**<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />**
<uses-feature android:name="android.hardware.usb.host" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>

最佳答案

有什么方法可以通过 Android Studio 或 Google Android Developer Console 了解为什么我的应用程序与 Brand X 设备不兼容?

是的,Cloud Test Lab 是您测试应用程序兼容性的一种方式。

Get free automated testing of your app on physical devices covering nearly every brand, model, and version of the devices your users might have. The lab helps you quickly find compatibility issues that you might miss using only your available test devices.

从 Android Studio 使用云测试实验室:

将以下内容添加到 studio.vmoptions 文件中:

-Denable.google.cloud.testing.plugin=true

现在,您应该能够在 Android Studio 的运行/调试配置对话框中看到 Cloud Test Lab 的其他选项。

Cloud Test Lab in Android Studio's Run/Debug configurations dialog

“云设备矩阵”下,您可以通过单击以下图标提供不同的“矩阵配置”:并创建不同的配置。

单击“应用”并关闭窗口。

现在您可以通过单击 Android Studio 中的“运行配置”图标来运行测试。

从命令行使用 Cloud Test Lab

首先,安装gCloud SDk 添加 Alpha 组件以允许从 Alpha 存储库访问 Cloud Test Lab

$ gcloud components update alpha

现在为 Codelab 配置项目。如果您使用自己的项目,请替换为正确的项目 ID:

$ gcloud config set project cloud-test-lab-babbq-2015

确保您的身份验证凭据是最新的

$ gcloud auth login

要在不同的设备上运行测试,让我们首先通过运行此命令查看可用设备的列表:

$ gcloud alpha test android devices list

例如:

在 Nexus6 和 Nexus7 虚拟设备上进行的测试,在英语和法语语言环境中纵向和横向运行 API 19 和 21。 GCloud 提供了测试结果页面的 URL,每个测试完成后结果都会显示在该页面上。

$ gcloud alpha test android run \
--type instrumentation \
--app app/build/outputs/apk/app-debug-unaligned.apk \

--test app/build/outputs/apk/app-debug-androidTest-unaligned.apk \

--device-ids Nexus6,Nexus7 \
--os-version-ids 19,21 \ --locales en,fr \
--orientations portrait,landscape

Guide For Using Google Cloud Test Lab

Google Play Developer Console with cloud Test Lab Feature

查看下面的链接了解更多详情 https://firebase.google.com/docs/test-lab/

希望对您有所帮助!!!快乐编码!!

编辑: 要查看 Firebase 项目中给定应用的所有测试矩阵的聚合测试结果,请点击应用的名称,如下面的示例测试矩阵结果页面所示。​​

示例测试执行结果页面

[5

示例测试矩阵列表页面

[6

只有四个测试执行的测试矩阵结果页面示例

[7

注意: 详细测试结果在您​​运行测试后 90 天内可用,并存储在 Google 云存储 (GCS) 存储桶中(但也可在 Firebase 控制台中查看)。在测试执行结果页面点击查看源文件,可以查看GCS bucket中的详细测试结果。当详细的测试结果不再可用时,您仍然可以看到哪些测试通过了哪些失败了。

注意: 图片来源取自官方文档。

关于android - 如何理解为什么 "Android app is incompatible with some specific devices",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248703/

相关文章:

java - 查找 ImageView 的真实位置

android - 如何在网站上检索图像的网址

android - 为什么应用程序突然与某些设备不兼容?

android - 发布中的多个 APK

html - 跨浏览器不兼容,如何将按钮 "同意して、アカウントを作成します"放回大框中?

perl5.12 - 如何在 Perl 5.12 中获得有效的 Data::Alias?

javascript - jQuery 代码在 Safari 中工作,但一半在 IE 中工作

android - 为什么 Android 不使用最新的 gradle 版本?

android - RecyclerView 对齐居中后如何获取居中项?

android - Android Play 商店中的 Delphi 11 应用程序显示警告 : Non-SDK API