提问者:小点点

谷歌Play商店是否容忍华为HMS?


我有一个应用程序,上面有通常的谷歌广告和应用内支付功能。游戏商店已经接受了。现在我想让它同时支持GMS和HMS(根据适当服务的可用性,应用程序可以决定使用哪个平台)。该应用程序内置华为功能,在我自己的设备上测试时运行良好。

然而,一旦华为的库与该应用捆绑,Play Store控制台就会拒绝它。没有错误消息,只有一个红色感叹号。毫无疑问,我开始一个接一个地移除华为相关部件,当最后一个部件被移除后,捆绑包又自动接受了。

是的,当然,我可能犯了一些我不知道的错误,但是情况相当可疑。如果有什么不同的话,我使用Flutter,并尝试上传一个应用程序包,而不是APK,就像现在的正常情况一样。看起来成功或失败的HMS库是com.huawei.hms: hwid:4.0.0.300来自https://developer.huawei.com/repo/的maven repo。

那么,我是否只是看到了一些东西?

好了,任务还在继续。

这是最近的新闻:https://support.google.com/googleplay/android-developer/answer/9934569

当前正在使用替代计费系统的任何现有应用程序都需要删除它以符合此更新。对于这些应用程序,我们提供延长的宽限期,直到2021年9月30日,以进行任何必要的更改。2021年1月20日之后提交的新应用程序需要符合要求。

不管政策怎么说,游戏机似乎已经开始执行了。正如我在查看应用程序包时发现的那样,仅仅使用味道方法是不够的。即使是其他口味的,仍然会有一些被flifter引用的包。也许只是引用的名称,而不是树摇动后的实际代码,但这已经足够拒绝了。

所以,在一天结束时,我真的认为这个问题需要解决,如果我们真的想编写跨生态系统、单一来源的Flutter应用,我们开发人员需要为我们自己找到一些明确的指导方针。至于我,我当然想做这件事。


共2个答案

匿名用户

不同的应用商店对应用内购买套件有不同的要求。Play Store控制台拒绝您的应用的可能原因是您的应用与其他IAP工具包集成,并且不符合《应用商店审查指南》的要求。建议您的项目支持不同渠道的不同应用程序包,以适应不同的应用程序商店要求。

支持多种口味

如果您的应用需要支持多种构建类型或风格,请配置从AppGallery Connect下载的agconnect-services.json配置文件以实现该功能。agconnect-services.json文件提供AppGalleryConnect项目中各种服务所需的配置信息。因此,如果您需要使用多种口味来发布不同的应用版本,请将agconnect-services.json文件复制到每个口味的文件夹并配置它。

支持多渠道

如果您的项目需要为不同的频道支持不同的应用程序包,则程序包名称需要根据频道的不同而有所不同。在生成中更改productFlavor中的包名称。应用程序目录下的gradle文件。

productFlavors { 
    huawei{ 
        // Unique package name. 
        applicationId "com.example.demo.huawei" 
        resValue "string", "app_name", "Huawei" 
    } 
    amazon{ 
        applicationId "com.example.demo.amazon" 
        resValue "string", "app_name", "Amazon" 
    } 
}

前面的示例代码显示了华为和亚马逊不同渠道的不同打包配置。两个通道的包名称不同。如果相同的agconnect服务。两个通道使用json文件,包名验证失败。要支持多个通道,您需要添加agconnect服务。将json文件保存到仅华为频道的flavor文件夹中,并确保项目中的AppGallery Connect插件版本为1.2。1.301或更高版本的classpath'com。华为。agconnect:agcp:1.2。1.301'). 如果插件版本早于1.2。1.301,升级到1.2。1.301或更高版本。

有关更多信息,请参阅文档。

匿名用户

在项目中创建两个子包。它们看起来像普通的Flutter包,但驻留在您的应用程序中。基本上,创建两个文件夹,gms_supporthms_support在通常的lib旁边。两者都是具有通常结构的包:

  • lib
  • lib\Xms_support.dart
  • lib\src
  • lib\pubspec.yaml

将所有依赖于供应商的内容放入相应的lib\src文件夹中结构相同的文件中,并确保这两个文件夹都支持XXX\u。dart文件以常规方式导出它们。实现应该使用相同的类和相同的签名。每个pubspec。yaml是指其自身的、特定于供应商的颤振插件,这些插件的实现需要这些插件。

你的主要应用程序pubspec。yaml包含两个引用:

dependencies:
  ...
  gms_support:
    path: gms_support/
  hms_support:
    path: hms_support/

另外,添加另一个支持。dart在主应用程序中:

export 'package:gms_support/gms_support.dart';
export 'package:hms_support/hms_support.dart';

无论您在应用程序中需要供应商特定的行为,都可以导入并使用此支持。省道文件。

然后,当你必须从一种口味改变到另一种口味时,你总是必须同步改变三件事:

  • 味道(请参阅IDE的详细信息)
  • 注释掉支持中的其他导出。省道
  • 注释掉pubspec中的其他引用。yaml并进行发布更新