华为 Mate 9 的预发布报告问题

Pre Launch report issue with Huawei Mate 9

最近几天,每次我发布 APK 时,我都会收到预启动报告,说它在 Huawei Mate 9 上失败了。报告没有说太多,日志中没有任何崩溃。我能看到的唯一奇怪的是它声称我的应用程序在屏幕截图上有病毒。我附上它显示的内容。因为我知道我的应用程序没有病毒,所以我很好奇是否有其他人看到了?此版本中唯一的大变化是我添加了 Unity 广告。

由于我的应用程序有一个介绍屏幕,我认为那些要忽略或卸载的按钮会阻止测试软件在我的应用程序中进行。

编辑:一个回复表明 READ_PHONE_STATE 是问题所在,但我只是在没有它的情况下发布了一个版本,它没有改变任何东西,警告仍然存在。而且该应用也没有短信权限。

编辑:我应该补充一点,我继续发布了这个版本,这个应用程序已经有几十万用户尝试了新版本,两个华为用户和一个 Oppo 用户提到了警告,所有这些都来自一些内置的保护,而不是他们安装的东西。

编辑:我请求的清单权限:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="com.android.vending.BILLING"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION"/>

编辑:华为代表对我说了这个:We have tested the app on Mate 9 device and other 2 models with Android 9.0, there is no such issue, it might be a problem with Android 7.0 system, so we suggested to guide the user to upgrade to Android 9.0 if they have this issue on their devices.

编辑:一位用户向我发送了一张更详细的屏幕截图,上面说 clicker.fc 是检测到的病毒。不知道那是什么,谷歌搜索没有帮助。我已经在我的 apk 上尝试了几种病毒扫描程序,但没有发现任何问题。

编辑:原来是Unity广告。我设法缩小了它发生的确切版本,然后开始在 Firebase testlab 上一个一个地测试新版本,并找到了导致它的确切行。在 gradle 上添加 Unity 广告每次都会这样做。

原因

这是 protection 针对智能手机中有害应用程序的消息。 这可能是因为一些**危险的权限**像 "Making Phone Calls""Sending SMS" "Reading SMS"。由于这些危险权限,某些防病毒程序将此类应用程序标记为来自您设备的潜在病毒威胁。

解决方案

尝试禁用安全弹出窗口:

Settings -> Google -> Security -> (Play Protect) And uncheck “Scan Device for Security threats”

没有AndroidManifest.xml提供,所以答案和问题一样含糊。

因此,我认为:

b) 您可能正在请求任何权限,这需要将应用程序注册为 default handler Intent

Your app must ask to become a default handler before it requests the permissions associated with being that handler. For example, an app must request to become the default SMS handler before it requests the READ_SMS permission.

b) 或者找不到访问敏感信息所需的隐私政策,如 PII(个人身份信息)。 Unity 广告还需要隐私政策。这些 Unity Ads 通常带有一点恶意,因为 UnityAdsCache ...用于将广告下载到设备以进行离线广告;类似图像和视频广告,长度为 +/- 30 秒(当内部存储空间已满时,可能会随着时间的推移导致性能下降)。参见 reddit。然而,应用程序的内部存储应该仍然可以访问 - 但对性能有负面影响 - 与使用外部媒体(如 SD 卡)相反。

c) 另一个可能的原因是,这是一个误报——只能通过联系华为来解决——他们可能会告诉你原因——或者相应地更新他们内置的防病毒应用程序的签名.

原来是Unity的广告。我设法缩小了它发生的确切版本,然后开始在 Firebase testlab 上一个一个地测试新版本,并找到了导致它的确切行。每次都在 gradle 上添加 Unity 广告。

我应该补充一点,虽然它发生在我的带有 Unity 广告的 apk 上,但我将 Unity 广告添加到 Android Studio 模板之一,它不会重现误报,所以不知道是什么问题在我的应用程序和添加导致它的 Unity 广告之间。