由于某些 不(xin)可(zhi)描(du)述(ming) 的原因,缺少“武林盟主”的国内Android市场一直比较混乱,应用分发、应用质量管控、权限管控、隐私管控 等各方面都不被重视,也就导致流氓APP横行,虽说苦了用户,但对开发者来说,倒是一路绿灯,所以在国内做Android开发,重心都放在代码上,对于应用上架、运营、推广,投入精力甚少,甚至可以说后两者已经和开发人员彻底脱钩,某一天突然接触海外业务时,被突如其来的各方约束搞的一脸懵逼,每天满脑子都是一个问题 —— “这TM你也要管?”

近两年工作重心一直在海外业务,对于海外的 Google 霸权也是深有体会,被虐了一遍又一遍,写代码、实现功能 似乎成了最微不足道的压力,最近打算吧这两年的血泪史整理一下,写几篇扫盲文章,希望能给后来的小可爱们多填几个坑。


为什么要上架?

在国内,Android手机用户非常习惯和擅长通过各种途径找到apk的下载方式,而且乐于主动的去找到下载方式,甚至拿到新手机的第一件事就是打开允许安装未知来源应用,我们安装APP的途径通常是:

  • 找到官网上的APP下载入口
  • 在应用宝、豌豆荚、系统应用商店 等各种分发平台搜索下载
  • 各种社交平台分享

这些操作对我们来说都是习以为常的,官网下载甚至成为部分用户的第一选择,但在海外市场,在Google 这个巨无霸的垄断下

Google Play Store 是绝大多数用户唯一信任和熟悉的应用分发平台

Android用户对Google Play Store的依赖和信任程度,比起 IOS用户的App Store 有过之无不及,这个理由可能还不足以说服所有人,但这仅仅是用户的主观选择而已,还有更多阻碍让你不上架就混不下去

你可能觉得如果我的App有足够吸引力,我就直接推广apk下载链接,不怕用户不去下载,但怕是没这么容易

1、Google Play 在海外作为手机的系统级应用,会默认开启 Play protect 功能,这就导致了在 Google Play 以外下载的apk文件,有一定的概率会被Google Play阻止安装,有时是告知用户危险,有时甚至什么提示都没有,只有一句 “应用未安装”
.
2、很多国家的用户,并不习惯打开 “允许安装未知来源应用” 这个功能
.
3、即使前面这些都忍了,大不了放弃这部分用户。那还有更高维度的打击,就是应用推广,市场上最优质的广告方,几乎都只接受投放Google Play 上架的APP链接,如Facebook、Google Ads 等,你拿着自己的apk下载链接去投放,就已经放弃了大部分的优质流量 (就只能用短信推推下载短链这样子…)

因为以上这层层阻碍,上架Google Play 几乎是出海APP的唯一出路,知道了为什么要上架,在说说怎么上架


上架要注意的代码问题

重点我会写出来,但还是有必要读一下 Google Play开发者政策: https://play.google.com/about/developer-content-policy/


在APP代码的处理上,Google Play 会对开发者上传的APP进行多次机器审核,即便已经上架成功,也会不时的复审,只要发现政策违规,轻则下架,重则封号… 通常最需要我们关注的审核内容包括:

1、apk的基本编译配置

  • Android Api 版本
    Google要求 targetApiVersion 支持到最新的2个版本(目前是要求 targetApi 29 以上)
  • ABI x64支持
    如果用到so库, 必须支持x64,通常 abiFilters 'armeabi-v7a', 'arm64-v8a' 即可
  • 签名有效期
    生成签名的时候需要注意有效期要在25年以上
  • App包名唯一
    上传到Google Play的APP,packageName必须是没有存在过的

验证包名是否已存在的方法:
拼接一个Google Play 详情页链接,能打开则代表包名已存在
.
https://play.google.com/store/apps/details?id=包名
已存在的包名链接示例:https://play.google.com/store/apps/details?id=com.twitter.android
不存在的包名链接示例:https://play.google.com/store/apps/details?id=com.twitter.android.test.new.pkg

2、恶意代码检测

  • 权限 : 需合理使用权限,敏感权限可能导致上架被拒
  • 协议通讯安全:API 需使用https,保护用户的数据安全
  • 马甲包:同一套代码重复上架,会被视为马甲包被封号(有这种需求需要做深度的代码混淆)
  • 内更新:APP不可有内更新、热修复、跳转三方下载链接等任何动态更改源码的行为(脱离Google审核的动态代码都不被接受),更新APP唯一途径是在Google Play 发布新版本
  • 使用隐私数据需披露:这个更多是靠人工审核,运气不好被查到会被下架
  • 色情、暴力、赌博 这些元素内容就不用多说了,可以看开发者政策
权限使用 特别说明

在权限使用方面,通常是国内开发者最不习惯的,Google对的隐私权限要求极为严格,权限使用不当会直接导致被拒绝上架,甚至线下安装apk都可能被Play Protect拦截,权限敏感程度一般分为几个等级:

A级敏感权限,需要提交权限申请表单,才可能被允许上架
通话记录权限组:READ_CALL_LOG、WRITE_CALL_LOG、PROCESS_OUTGOING_CALLS
短信记录权限组:READ_SMS、SEND_SMS、WRITE_SMS、RECEIVE_SMS、RECEIVE_WAP_PUSH、RECEIVE_MMS
~
短信和通话记录是敏感度最高的权限,如果Manifest中有添加这些权限,在Google Play中上传apk时会触发权限使用申请表单,需要提交相关资料,阐述APP需要这些权限的原因,并提供对相关隐私数据使用是否合法的证明(由于不同国家的政策力度不同,权限申请表单的通过率也不同,比如印度、墨西哥 对SMS_LOG 就管理相对放松)
~
~
B级敏感权限,需要为用户提供隐私协议
通讯录权限:READ_CONTACTS、WRITE_CONTACTS
定位权限:ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION、ACCESS_BACKGROUND_LOCATION
相机权限:CAMERA
SD卡权限:READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE
设备信息权限:READ_PHONE_STATE
~
如果Manifest 添加有以上权限,则在Google Play上架APP时,需要提供隐私协议url,同时也要在APP中向用户展示,并征得同意,在隐私协议中需详细列出APP使用了哪些权限、收集上传了哪些数据、收集这些数据的目的用途、以及承诺和阐述 如何保证用户的数据安全


如何上架

1、准备Google Play开发者账号

对于不需要大量上架的普通开发者来说,注册账号很简单,用gmail登录Google Play Console,准备一张支持美元的卡(国内有的双币卡付不成功,招行、工行一般都可以),支付25美元即可永久开通开发者账号
Google Play Console: https://play.google.com/console

如果需要上架多个APP,可以考虑购买现成的开发者账号:http://www.mugglemail.xyz/

2、准备上架材料

  1. APP名字(支持多语言)
  2. 简短标题(支持多语言)
  3. 详细描述(支持多语言,如果后期涉及推广,需要加上客服电话、邮箱、和详细地址)
  4. logo 尺寸512x512
  5. 主页截图2张以上(也可以用youtube视频)
  6. 置顶宣传图 尺寸1024x500
  7. 隐私协议url,用到上述敏感权限的话,需要准备隐私协议
  8. apk文件 注意上面提到的编译配置

3、发布应用

1) 打开Google Play Console , 创建一个APP

无需多讲,根据 Title 填充文本即可

2) 按指引完成所有资料填写

3) 填写隐私协议url(如果需要)

4) 选择发布国家

5) 创建release版本(Google Play可以先提交测试版本,然后发布到beta,最后到release),像我这样不需要再测试的,这里就直接创建release版本了

6) 选择是否使用Google 二次签名(最终用户下载的APP是Google生成的签名,你的签名只用来更新Google Play版本)

7) 接下来上传apk,填写此版本功能介绍,然后无脑下一步就可以了

发布之后,会有一周左右的审核,不同时期审核时间也不一样,比如疫情期间审核一个月都正常,而两年前审核不严格的时候,只需要10分钟就能上线…
~
~

8) 审核结果

上线成功之后,Console中的审核状态会消失,Dash board 会有跳转到APP安装页面的链接
或者如文章开头说的,手动拼出来也可以:https://play.google.com/store/apps/details?id=包名

如果上线失败,可以查看注册账号时填的邮箱地址,会有被拒绝的详细原因,上线失败大概分几种:

  • 被拒绝(Rejected)
    邮件中会给出修改建议,通常是资料不完整或隐私协议不适用,进入Console 修改相应内容后,点击提交即可触发新的审核,然后再等审核结果

  • 被停用 (Suspend)
    邮件中会说明被停用的原因,通常是APP包含违规内容,APP的包名会被永久禁用,想再上架只能换个包名,创建新的APP提交版本,如果多次被Suspend,可能导致封号

  • 被封号 (Terminated)
    邮件只通知封号,封号理由都是模糊的模板回复,不会告诉你他们抓到的真正把柄,封号原因有很多种,如:

1、账号提交了多个违规APP,频繁被Suspend
2、代码关联,即提交的APP被判定为马甲包,你的 代码/服务器地址可能多次使用、多次被封号,已经被标记
3、账号关联,你使用的账号,涉嫌和其他已经被封的账号,归属于同一开发者,可能是由于支付卡、支付开发者费用时的设备/网络环境、gmail注册时的设备/网络环境 等产生关联,被认为你注册账号就是目的不纯
~
换个说法就是 — Google: “小样,我知道是你,你以为换个马甲我就不认识你了? 再被我发现你注册新号,我还封你!”

Android出海攻略(一):Google Play 上架扫盲相关推荐

  1. Android学习攻略:手把手教你循序渐进地学习Android知识

    前言 如果你也学习Android,那么你大概率会看过我的文章.经常有读者给我留言:"该怎么学习Android?"."日常学习Android的方法是什么". 所以 ...

  2. android游戏手柄,没手柄也不怕 键盘玩Android游戏攻略

    越来越多的朋友开始在手机等移动设备上享受游戏的乐趣,可不得不说用手指在触屏上玩游戏总有那么点不爽,于是乎,有玩家开始琢磨手机游戏新的玩法,为手机配上手柄(如下图),这其中既有专用的,也有将其他游戏平台 ...

  3. android游戏攻略,安卓手机游戏攻略

    攻略 独奏骑士70层如何通关 在独奏骑士中有很多的特色玩法,其中一个就是爬塔玩法,在这里有多个关卡,70层就是其中一关,也是比较复杂的一关,下面就跟着小编一起来看看70层通关方法吧!独奏骑士70层通 ...

  4. Android 升级/刷机攻略(Google原生系统Pixel)

    由于Google在五月份的I/O大会上新发布了Android P 9.0系统,公司需要测试APP在9.0上的兼容,因此拿到Pixel升级系统. 因为考虑到刷机开发版后无法再检测到更新,所以就还是尽量升 ...

  5. 大厂app出海攻略|一个方法让app推广变现能力双效提升

    中国APP出海之路,早已从满足用户功能及市场需求,转变为兼顾用户市场.政治因素.法律政策等的多维度考量,充满挑战.APP出海尚且如此艰难,想要进一步变现更不必说. 本篇的初衷不是来营造焦虑的,而是传递 ...

  6. Android面试攻略

    文章背景 在外界看来IT是一个"高薪"的行业,都羡慕不已,熟不知IT也是一个苦逼的行业,每天加班加点,时刻用生命在写代码啊,导致许多程序猿和程序媛们都找不到对象,好不容易有个家庭的 ...

  7. WM平台玩转Android全攻略

    Android系统目前大行其道,flowermix也把玩过一段时间的G2,被Android系统的开放性和丰富的软件所吸引(我是重度测试控╮( ̄▽ ̄")╭ ). 相信大家早就看到过很多关于Wi ...

  8. flutter开发工具,2020年最全Android面试攻略

    摘要 开篇之前,首先说一下,大神就别点进来了.小编只是尘世间一个迷途小开发,二流程序员. 这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+ ...

  9. 哈佛商业评论:中国互联网公司“出海”攻略 -TOP Network CMO Noah评论

    原文发布于<哈佛商业评论>:http://www.hbrchina.org/2019-04-04/7212.html 自从移动互联网时代来临,中国科技创业公司一直在积极探索国际市场.早期阶 ...

最新文章

  1. Python中输出字体的颜色设置
  2. 史丹利对话中国农民丰收节交易会-万祥军:谋定跨国合作
  3. jq checked 设置问题
  4. 用ado.net生成对应的sql语句
  5. MMOCR: OpenMMLab 全流程的文字检测识别理解工具箱
  6. Guava学习笔记:EventBus(转)
  7. ios 重复引用 静态库_iOS项目引用静态库文件.a
  8. linux 设置端口常用命令
  9. 关于信息熵的简单理解
  10. 1个开发如何撑起一个过亿用户的小程序
  11. python数据可视化仪表盘,Python 数据可视化?
  12. C语言入门(20)——使用VC2013对C语言进行调试
  13. 高频电子线路实验箱QY-JXSY25
  14. 如何在微信小程序中使用echarts绘制地图(微信小程序制作疫情数据地图)
  15. Educational Codeforces Round 91 (Rated for Div. 2) D. Berserk And Fireball
  16. iOS软件工程师面试 自我介绍
  17. 【信息】三方协议签订相关问题及解答
  18. 和平精英显示模拟服务器已满,和平精英模拟器注册已经达到了上限怎么办?原因及解决方法分享...
  19. node如何安装指定版本(最详细教程)
  20. 惠普 ProBook 笔记本下的 WIN10 解决 VMware 开启Intel VT-x问题

热门文章

  1. 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发机制...
  2. 如何开始做一个开源项目?他的亲身经历值得参考
  3. #19ACM第一次招新补题赛de题解呐#
  4. ACM POJ 题目分类(完整整理版本)
  5. 南京计算机与软件学院,南京信息工程大学 计算机与软件学院 刘 琦
  6. jsp22216美食菜谱食谱网站系统mysql
  7. 简书markdown
  8. 一文速学-Pandas处理时间序列数据操作详解
  9. 蕉爷的深知精读会(2022年最新整理分享)
  10. 有些朋友没看清楚,我在这里再特意强调一下