Google上架踩坑记录

前言

最近的项目要在海外运营,首先要上架 Google Play,但是手上的项目是国内的代码,为了上架可以说是踩了不少坑,这里简单记录一下。

1、 升级 targetSdkVersion 31

Manifest merger failed : Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

升级完之后就报了这个错误,其实提示已经很明显了,google 要求 Android 12 之后,Manifest 文件中带有 <intent-filter> 的组件需申明 android:exported 属性。

  • 修改后


    image.png
  • 问题是,我已经把 Manifest 文件,所有带 <intent-filter> 的四大组件都加上了 android:exported 属性,还是报错,于是 analyze 打出的 apk (Build -> Analyze Apk),查看打包之后的 Manifest 文件,这里可以看到所有注册的组件,如果是第三方SDK注册的组件未申明 android:exported 属性的话,copy 一份到工程 Manifest,添加上即可(参考上图)。
2、 Google内购
  • Google上架,在审核代码的时候,会要求代码中包含
<uses-permission android:name="com.android.vending.BILLING" />

APP内购买的权限,如何集成内购,可以参考这个链接 将 Google Play 结算库集成到您的应用中 | Google Play 结算系统 | Android Developers

  • 这里需要注意的是,如果 App 未上架或者未审核通过,是没办法通过 Api 查询到商品列表或者商品详情的。App 至少需要面向开发者全面发布,才能正常查询商品详情。另外,查询商品的 Product Id 必须和 Google 管理平台 添加商品时的商品 ID 一致。
  • 然后在谷歌管理平台添加开发者账号,Google 会给开发者分配一张虚拟的测试卡,可以正常唤起支付弹窗并且允许跳过实际支付过程。
  • 在测试机上的 Google Play 登录测试账号,只要应用通过审核,这时候就可以调起内购的弹窗了。
3、SSL Error Handler
image.png

在审核的时候,google 反馈了这个问题,直接看下面代码

  webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//                super.onReceivedSslError(view, handler, error); //一定要去掉
                // handler.cancel();// Android默认的处理方式
                handler.proceed();// 接受所有网站的证书
                // handleMessage(Message msg);// 进行其他处理
            }
        });

这里接受所有网站证书,google 认为是个安全漏洞,最简单的办法就是全局搜索一下这个方法,去掉,或者弹窗让用户选择是否接受不安全的网站证书。

4、 第三方SDK
image.png

嗯…百度翻译一波…

通过Google Play发布的应用程序不得使用Google Play更新机制以外的任何方法修改、替换或更新自身。同样,应用程序可能不会从Google Play以外的源下载可执行代码(例如dex、JAR、.so文件)。此限制不适用于在虚拟机或解释器中运行的代码,其中提供对Android API(如Web视图或浏览器中的JavaScript)的间接访问。
在运行时加载的具有解释语言(JavaScript、Python、Lua等)的应用程序或第三方代码(如SDK)(如未与应用程序打包)不得允许潜在违反Google Play政策。请注意,您对应用程序的各个方面负责;通过在应用程序中使用SDK,您需要对SDK在应用程序内的行为负责。

总之 google 不允许应用有自动更新的行为,像国内热修复等补丁功能,google 是严令禁止的,于是项目拿掉了像 bugly,友盟,百度统计,阿里云日志,阿里云人脸识别,百度人脸识别,等可能读取用户信息和自动更新的第三方SDK。

5、 Huawei Mobile Services SDK
image.png

嗯…再百度翻译一波…

您的应用程序包含不符合设备和网络滥用政策的内容。我们发现您的应用程序使用的是不兼容版本的华为移动服务SDK,该SDK包含从Google Play之外的未知来源下载或安装应用程序的代码。
鉴于SDK的性质,请将其从提交到Play Store的应用程序版本中删除。

这个问题可以说是非常严重,直接导致我们的应用封停了。也就是说之前上架的版本也会被迫下架……上面说到了,谷歌严令禁止代码中存在动态更新的行为,这里说使用了不兼容的华为移动服务SDK,该SDK包含从Google Play之外的未知来源下载或安装应用程序的代码。笔者第一个想到的是 Huawei Maven 仓库。

maven { url 'http://developer.huawei.com/repo/'}

其次,笔者还拿掉了跟华为相关的推送SDK(顺手拿掉了魅族,小米,OPPO,VIVO,相关推送的 SDK)

 implementation 'com.huawei.hms:push:6.3.0.302'

Huawei 相关第三方库

implementation 'com.llew.huawei:verifier:1.0.3'

这个库是为了修复华为 Register too many Broadcast Receivers 的崩溃的,可能被 Google 识别为动态修复的代码了吧。

还有一个适配桌面未读消息的角标的库

implementation "me.leolin:ShortcutBadger:1.1.17@aar"

从 manifest 文件看到它申请了一系列华为的权限,没办法先拿掉吧。

6、 不安全的加密模式
7、 不安全的解压缩模式
e57cf69cf00f1f84089eb34eafee8c3.jpg

这里简单说一下,Google 只是建议我们按照给的参考文档,修改这两个问题,但并不强制。想优化的直接点进去 Google 帮助中心文章 参考修改就行了。

8、 登录凭据无效或不完整

为了审核您的应用是否符合开发者计划政策,我们需要您提供该应用的有效登录凭据以及审核该应用所需的任何其他资源。具体问题如下:

  • 您未向我们提供访问您的应用所需的有效演示/访客帐号或有效用户名和密码。

解决:一定要记得在 Google 后台添加测试需要的账号密码,具体看截图。

image.png

Google 会登录开发者提供的账号密码测试应用功能的完整性,到了这一步,基本上审核通过问题不大。到这里笔者的项目算是顺利上架了,也希望这篇文章给需要上 Google Play 的打工人提供点点的帮助。加油,只要思想不滑坡,办法总比困难多……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容