11

不知道大家注意没有,最近几年来,新的移动App想要上架是会非常困难的,并且对于个人开发者和小企业几乎是难如登天,各种备案和审核。但是到底有多难,或许只有上架过的才会有所体会。

首先是目前各大应用市场陆续推出新的声明,各种备案截止日期到12月就要到最后期限责令整改不让更新,明年再不整改就面临下架风险。

image.png

如果是一个新的 App 如何从新开始上架需要经历那些步骤,会踩到哪些坑?总的来说,主要会涉及以下步骤:域名备案,IPC备案,App网安备案,隐私协议检测,然后上架各大应用市场的隐私检测,证件查验,功能确认等。

下面我们就从隐私协议,网安备案,应用市场审核等几个关键步骤来给大家说明下在国内如何快速地实现应用上架。

一、隐私协议

应用启动的协议弹窗

或许,当大家第一次启动应用时都会碰到弹出权限声明弹窗,附上隐私协议与用户协议的场景。大致包括一些敏感信息的收集,数据安全的声明,敏感权限的使用声明,第三方库的收集信息声明,自启动相关声明,个性化推荐相关声明等等。

延迟初始化

接着,就是针对一些需要收集用户设备ID信息的第三方库,不能直接在 Application 应用启动的时候就第三方插件了,需要在用户同意协议之后才能初始化,所以才有延迟初始化这么个说法。那前两年很流行的 ContentProvider 自动初始化技术怎么办呢?

Flutter 应用可以在 main.dart 中创建 app 的时候弹窗,也可以在 Splash 页面中检测弹窗都可以。Android App 也是同样的做法,可以在 Application 中检测也可以在 Splash 页面中检测。

如果有第三方SDK在没有用户授权的前提下偷偷的初始化了,被检测出来将会不予通过,直接退出。

浏览模式

其实网安检测,只需要在不同意协议的时候退出应用就可以通过,但是部分应用市场需要提供浏览模式,你不能暴力的让用户退出。就算用户没有同意协议,就算一些第三方不能初始化,就算不能登录注册收集用户敏感信息,用户也要能浏览应用的基本功能。所以开发者就要推出浏览模式。

个人信息收集

这个一般不会有什么问题,隐私协议中需要声明,收集用户哪些信息,收集设备哪些信息,用于干什么怎么保存是否加密等等。 有限不包括 设备ID,运营商,用户ID,设备SN,用户信息等等。

危险权限声明

主要用于申明应用会使用哪些危险权限,做什么用途, 危险权限包括:相机,存储卡,定位,麦克风等。比较难搞可能是一些第三方SDK声明了一些不知道的权限,比如我只想用相册,结果里面还有麦克风权限...

对于这种问题,我们只能在隐私权限中加上是应用需要功能,或者要求SDK进行修改。

注销账号功能

这个功能,iOS市场和谷歌市场都有相关要求,不难理解,只需要在设置页面添加注销账号功能就行。

自启动

这个不是保活,一般自启动都是推送相关SDK需要用到,例如极光和个推,我们需要在隐私协议中声明为什么需要自启动即可。

广告的倒计时

广告倒计时不能超过5秒,并且要可以关闭,规范点击范围,并且明确表示跳过广告的文本。

推送与个性化推荐

推送与个性化推荐是不同的两个东西,推送是基于用户信息给用户发送通知。现在,推送需要在设置中提供关闭推送的开关。

个性化推荐是手机用户信息,大数据分析用户tag,展示不同的信息流。如果你的应用没有个性化推荐千万不要加这种文本。如果你的应用有个性化推荐,那么就要提供相应的相应关闭个性化推荐的开关。并且开启和关闭之后信息流会发送明显的变化,如果开启和关闭信息流没有变化就会无法通过隐私协议审核。

二、网安备案

App备案流程分为 服务器域名备案,IPC备案,网安备案。

我们都可以通过阿里云来申请,这里我不打广告,有兴趣的可以自己去阿里云官网去查找。只需要填写相关公司信息和实名信息不难通过,难的是 App 网安备案。网络安全备案的流程是先申请,然后工作人员到公司实地考察,然后委托第三方对App进行安全审查,审查通过之后完成备案可在全国互联网安全管理服务平台查看。

国内各大应用市场主要是需要应用去申请这个备案。具体的复杂流程就是这个第三方审查机构,由于是与ZF合作的关系,各个城市可能第三方的审核机构都不同,我们这里是某邦平台,下面开始踩坑。

提交开发好的 App 包 WX 发给对方的对接人员,他们检测之后会出具检测报告,大概100页左右。由于第一次我太天真以为只是扫扫毒查查隐私的什么的,没有加固直接给他们了,结果:

image.png
于是,我赶紧使用360进行加固之后再次提交试试,结果确实少了很多,但是剩下的都是一些顽固问题。比如,一些第三方SDK中四大组件的一些问题很难搞,可能是一些 Flutter 插件并不是最新的,需要手动的集成 Native 库,而一些 Native 库里面又嵌套 Native,烦不胜烦。

改来改去,拉扯几个回合,直到最后的一个问题始终解决不了,就是未混淆与反编译风险。原始APP混淆之后,反编译Dex是这样:

image.png

虽然已经很好了,但是审核机构会说类名没有混淆,不让通过,那就用他们自家的加固产品吧。反编译之后是这样的:

image.png
接下来, 我们说明一些 App 安全审查容易中招的点:

加固服务

解决了加固问题,WebView相关漏洞攻击风险,Http漏洞攻击风险,动态调试攻击风险,应用克隆”漏洞攻击风险,动态注入攻击风险 都可以解决。

image.png

拒绝服务攻击漏洞

image.png

代码混淆处理

image.png

反编译风险

image.png

导出标识和组件权限

image.png

数据任意备份风险

image.png

等一切都通过了,网安会发送短信提示审核通过,当然我们也可以自己到全国互联网安全管理服务平台查询。

image.png

需要注意的是 App 备案包括网安备案只会审查第一次,只要过了,后续如果继续更新 App 则无需再次审查了,而应用市场上架会每次都审查,不过应用市场主要审核隐私协议与 App 功能,对于 App 的安全则没有网安审查那么严格,一般只要使用加固服务基本都能过。

三、应用市场上线

关于应用市场上线,我们上架的平台主要是应用宝,小米,华为,Vivo,Oppo,魅族等大的平台,除了华为应用市场其他的应用市场都大差不差。唯一的差别可能就是应用宝,小米,vivo 他们可以上传32位包和64位包,华为不支持分开传但是他支持AAB格式也不错。

只需要准备好相关的证件,如软著(电子版也可),营业执照,特殊行业证件(新闻,招聘,劳务派遣等等),各大应用市场的承诺书盖印公章,上传包提交审核即可。如果应用被拒了多半是隐私协议的问题,他们不会过多关心你的应用功能怎么样,不会给你应用提出意见。

以下是上包过程中可能出现的几个踩坑的点:

  • 加固,一定要加固之后再传包,建议打三个包32位,64位,和全量包,并分别加固。
  • 危险权限一定要在上架的时候声明用途 。

image.png

  • 自动化测试,一些应用市场需要进云测,我们可以白嫖小米和华为的免费云测时长。
  • 华为应用市场,他们比较人性化了,会对产品提出他们的想法。比如我们的列表信息没有举报功能不够人性化,用户体验不好,总之会让人感觉很奇怪,谁让人家遥遥领先呢。

另外证件不够,需要额外的增值电信业务经营许可证。其他平台都不要就他要,8000大米没了。再就是应用名称有类似的,需要提供品牌证明,好吧我们得注册品牌申请专利和Logo等操作。

四、后记

经过九九八十一难,App终于上架完成。是不是第一次比较轻松后续更新迭代会松一些呢?错!你说的那是谷歌市场不是国内应用市场,国内的市场更新迭代也需要审核,我就遇到过一些应用市场在迭代的时候找出问题要我们修改隐私协议的,每次更新上架都会审核一次。

不过审核的速度会快一些了,小米是最快的也是比较严格的,其次是 Oppo 也很快没有那么严格,再其次就是应用宝和魅族,再其次就是 Vivo 比较慢,最慢的就是华为应用市场了。还是没经验啊,我一直都吐槽谷歌市场难用,现在我倒觉得谷歌市场才是最好用平台了。

现在上架一个国内应用市场真心难,如果是个人开发者可想有多难,应用市场不支持个人开发者,你得注册个人公司,开了公司就有隐形的成本付出,就算你注册了个人公司也需要一些额外成本才能最终磕磕绊绊上线。

无论如何,App总算是上架了,这里也把我踩过的坑分享给大家,希望对各位 Androider 有些帮助。


xiangzhihong
5.9k 声望15.3k 粉丝

著有《React Native移动开发实战》1,2,3、《Kotlin入门与实战》《Weex跨平台开发实战》、《Flutter跨平台开发与实战》1,2和《Android应用开发实战》