????????关注后回复 “进群” ,拉你进程序员交流群????????

作者丨恋猫de小郭

来源丨GSYTech(ID:gsy-tech-zone)

本篇将科普 Android 和 iOS 平台的打包和提交审核流程。

因为很多 Flutter 开发人员可能只有单端的开发经验,对于另外一端的打包和提审流程不熟悉,或者是前端人员没有提交审核的经验,所以本篇将科普这一流程,让大家少走弯路。

一、Android 打包和审核流程

1、打包

事实上 Androd 的打包和审核流程都相对简单,打包 apk 只需要通过如下命令行就可以完成:

flutter build apk --target-platform android-arm64flutter build apk --target-platform android-arm64 -t lib/main_prod.dart
  • 其中 --target-platform 是针对打包后的 so 文件, 对需要支持的框架进行选择,因为现在无论是 Goole Play 或者国内平台,都多都有要求应用需要支持 arm64-v8a 的 ABI 架构,所以一般打包也会选择指定 target-platform 来减小 apk 的体积。

  • -t 表示指定其他 main.dart 打包,也可以不指定。

  • 另外需要注意,Android 上需要在 android/app/src/build.gradle 下配置 signingConfigs 来指定打包密钥等信息,具体生成密钥这里就不详说,之后把 signingConfigs 配置到 buildTypes 就完成配置。

android {····signingConfigs {config {keyAlias "xxxx"keyPassword "xxxx"storeFile file("../keystores/xxxxx.jks")storePassword "xxxx"}}

最后需要注意,如果你的 Apk 存在其他类型架构的 so 目录,比如 armeabi-v7a 等,那就需要在 android/app/src/build.gradle 的 android { buildTypes { 下加上 ndk abiFilters 进行过滤配置,因为 Android 下需要保证每个 ABI 目录内的 so 文件是完整齐全的,不然可能出现崩溃。

  buildTypes {release {signingConfig signingConfigs.configndk {//设置支持的SO库架构abiFilters 'arm64-v8a'}}debug {signingConfig signingConfigs.configndk {//设置支持的SO库架构abiFilters 'arm64-v8a', 'x86', 'x86_64'}}}

最后打包完的 Apk 默认会在如下图所示路径

2、提交审核

其实在 Android 上提交审核是比较简单的,因为 Android 只需要提供 Apk 下载链接就可以直接安装,所以很多厂家都在有自己服务器上直接放上 Apk 文件,但是为了更好的体验和分发,大多数情况下也会选上传到各大应用平台,比如华为上没有上架的话,会出现如下图所示问题。

甚至有些 Apk 因为没有上架,会因为 app_name 等原因被当作病毒提醒。

事实上国内的应用市场审核并不麻烦,只是因为平台多且各家条件可能不一样变得比较繁琐,目前主流要求的有:

  • targetSdkVersion 28 (9.0);

  • ABI 需要支持 arm64-v8a

  • 应用需要针对 Android Q(10.0)进行适配,比如文件读取权限变更;

  • 教育类应用需要备案;

  • 需要提供用户隐私协议和权限说明;

之后就是一些平台的独立审核问题,比如 360 平台审核要求你的 Apk 需要经过它们的应用加固(加固后的作用就见仁见智),并且不少平台如应用宝要求提供应用的版权说明等文件,这些都是比较磨人的东西。

当然有些平台你可以不上,但是比如不上应用宝,你就很难获得微信扫一扫后跳转打开应用和下载的能力。

另外比如华为平台会有:根据工信部关于开展 APP 侵害用户权益专项整治工作的通知要求,应用内还需要提供帐号注销服务或销户功能能力。

可以看出 Android 的审核和条件其实并不繁琐,只是有些平台需要的东西比较磨人,具体需要上架可以根据需求自行斟酌了。

二、iOS 打包和审核流程

1、打包

iOS 的打包和审核流程相对复杂点,打包 iOS 首先你需要有开发者账号、给应用申请和设置有 Bundle Identifier 、配置文件、证书等信息,相信已经到打包阶段了,这系列文件你不会欠缺吧?

1.1 创建 App Store Connect

通过登录 https://developer.apple.com 网站,在 Account 的 Certificates,IDs & Profiles 可以找到你应用的信息,同时在 App Store Connect 栏目可以前往 https://appstoreconnect.apple.com 。

接着在 我的 App 按照提示创建应用,填写信息根据业务要求填写即可,这里主要说几个需要关注的点。

  • 1、如下图所示在 App Store 的 App 信息里有一个隐私政策网站输入栏,这个是必填的,一般就是放一个 Html,具体可以参考类似的:https://guoshuyu.cn/home/index/privacy.html

  • 2、需要上传应用的截图,一般需要准备 3-5 张预览图,但是这里需要 6.5 寸和 5.5 寸两种,如果还需要支持 iPad 版本那就还需要上传 12.9 的 iPad 图。这里推荐下,如果没有设计师出稿件,推荐使用模拟器进行截图(注意不要截入 DEBUG 的 Label), 6.5 寸可以用 iPhone 11promax 模拟器,5.5 寸的用 8plus 模拟器,打开具体页面后,按下 command + s 可以保存到桌面

这里需要注意,截图的画面不要太简单,最好能替体现应用的具体内容,不然很容易被拒绝,这里同时提供需要尺寸对应的设备型号。

  • 3、在版本的信息里还有技术支持网站的必填,这个具体可以参考 :https://guoshuyu.cn/home/index/tech.html ,如果此处不符合条件也会出现审核不通过的问题。

  • 4、另外如果 App 需要登录,还需要提供用户的测试账号和密码等。

1.2 打包上传

打包 flutter iOS 首先需要执行 flutter build ios 命令,命令会生成 release 模式的下的 framework 文件,之后就可以进入 Xcode 流程。

如下图所示,首先确保????位置不要选中模拟器,之后在 Product > Archive 就会开始导出打包。

打包成功后可以看到如下界面,找到你最新打包的那一项,选择 Distribute App 就可以进入下一步;另外打包过的项目在 Window > Organizer 也可以重新找到。

之后如下所示,就选择上传 App Store Connect 进行提交准备。

如果是选择导出测试 ipa 可以选择 Development,前提是对应机器的 UDID 等信息已经在打包配置文件内。

之后可以选择 Upload 或者 Export,Export 就是导出后再在本地上传,可以使用 TransPorter 工具再单独上传;Upload 就是前面之后直接上传。

接着出现的这个页面建议是不要勾选(不要问,问就是百度),然后直接 next,然后选择自动签名,等签名成功后最后点击上传就可以了。

2、审核

上传成功后就,过一段时间可以在活动和 TestFlight 看到你提交的构建版本,然后你可能会收到如下所示的一封邮件:

其中比如 ITMS-90683 说的是没有在 plist 内配置 NSContactsUsageDescription 的 key-value,也就是向用户解释你为什么需要用到读取用户联系人的权限。

诸如此类的还有后几个都是,如果你应用内用到了对应的权限。就需要在 plist 配置上对应的 key-value 。

另外就是 Push Notification Entitlement 的警告,是说你的应用没有配置推送相关的证书和设置,如果你的应用没有用到对应的功能,比如在 Developer 后台看如下图所示的推送是否勾选了,如果勾选了就需要在应用内配置对应的推送服务,iOS 上 APNS 还需要设置对应的推送证书,一般推送证书还会分开发和生产两种,如果没有使用推送可以忽略警告。

还有就是 App 的启动页和 logo 尺寸记得配全,配置不全也会收到对应的警告,这个可能会影响审核。

之后在版本信息里选择需要提交的构建版本,之后提交审核即可,一般审核会从等到审核 > 正在审核 > 审核结果,这个过程一般在 24 或者 48 小时之内,但是如果赶上了像圣诞节这样的节日,苹果会因为放假放慢审核,另外被拒绝的太多次的话,也会影响审核速度。

如下图所示,最后提一些审核建议,比如:

  • 前面说过的应用截图要尽量体现应用的主要内容;

  • 不允许在应用内滥用应用更新提示,比如不允许应用自己跳转下载更新,只能是简单提示后跳转 app store ,如果把握不好尺度干脆在 iOS 上就不加;

  • 不要在应用内带有 fir.im ,蒲公英等资源、链接、文本和SDK,不然很容易被扫描然后拒绝。

以上这些都是属于常犯的问题,更多的还请看 :https://developer.apple.com/cn/app-store/review/guidelines/

iOS 还有可以不用上架,只需要用户在手机上信任证书的可以使用 ipa 的开发者账号,但是这类开发者账号现在很难申请得到,并且这类账号的应用需要一年后重新打包一次更新。

资源推荐

  • Github :https://github.com/CarGuo

  • 开源 Flutter 完整项目:https://github.com/CarGuo/GSYGithubAppFlutter

  • 开源 Flutter 多案例学习型项目: https://github.com/CarGuo/GSYFlutterDemo

  • 开源 Fluttre 实战电子书项目:https://github.com/CarGuo/GSYFlutterBook

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

Android 和 iOS 打包提交审核指南相关推荐

  1. 第 3-5 课:Flutter 调试及 Android 和 iOS 打包

    在使用不同的开发语言进行开发时,一般都会用到调试.断点调试功能.例如 Web.Android 等等都是支持调试和断点调试的,Flutter 也不例外,支持调试和单元测试功能,还有性能.布局分析器等等. ...

  2. 苹果App Store程序提交审核指南中文版

    (注:<苹果应用商店审核指南>中文翻译最近一次更新为2013-03-04,文中红色部分是相对于2013-03-04版本的新增内容,绿色部分代表更改的内容,蓝色表示苹果相关官方文档的链接.) ...

  3. ios应用提交审核出现的问题总结

    1. 当进行到生成上传包即:点击product>>archive >>validation时: 先是出现"t he bundle does not contain a ...

  4. iOS 2020APP提交审核加急流程

    1.苹果加急官方连接:[连接]苹果官方连接 2.选择request an expedited app review 3.填写资料 4.填写理由,填写理由时填写出现闪退,或者APP有重大问题,这样通过率 ...

  5. iOS App 上架App Store及提交审核(Appuploader)

    上架App Store审核分7步进行: 1.安装iOS上架辅助软件Appuploader 2.申请iOS发布证书(p12) 3.申请iOS发布描述文件(mobileprovision) 4.打包ipa ...

  6. HBuilder发行App(Android和ios)

    怎样将开发好的app测试和上架,此文包括Android和ios打包.测试和上架的大概过程.内容有些简陋,因为此过程踏坑无数,特此留念. 特此声明:内容不全仅供参考. 介绍两个参考网站: 1. http ...

  7. 跨平台应用开发进阶(二十五) :uni-app实现IOS云打包解决IOS提交审核相册等隐私描述语导致审核失败问题

    文章目录 一.问题描述 二.问题分析 三.解决方案:IOS云打包修改权限提示语 3.1 IOS隐私信息 3.2 设置方法 四.拓展阅读 一.问题描述 Guideline 5.1.1 - Legal - ...

  8. android音视频开发进阶指南,音视频开发进阶指南:基于Android与iOS平台的实践

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  9. 使用HBuilder打包Android和iOS,并上线

    能专心做某件事是美好的,但现实没那么纯粹.比如某个项目是用H5写的,当需要将它打包成APP并上线使用时,就要用到HBuilder这类工具了. 原材料: Android 小米:小米开发者账号 华为:华为 ...

最新文章

  1. ndk 不用java_使用NDK创建及配置C++程序(原生纯C++项目,不包含JAVA代码)
  2. Jsp在Web.xml中的配置
  3. 写一个比较全的进制转换函数--ic
  4. Android-使用FindBugs
  5. 没有 root 权限如何使用 pip?How to install python modules without root access?
  6. 线性表的顺序存储结构之顺序表类的实现_Java
  7. java面向对象(this关键字)
  8. python判断英文字母_python判断字符串中是否含有英文 | 个人学习笔记记录
  9. C语言学习笔记---动态内存分配
  10. ios开发转行_做了几年嵌入式,想转服务器开发,该学什么?
  11. 方差分析、T检验、卡方分析如何区分?(转载)
  12. Foxmail添加163邮箱账号的方法
  13. 中国科学家dna计算机,我国首台DNA计算机问世
  14. leetcode643. 子数组最大平均数 I
  15. 计算机网络基础知识1
  16. 【吉大刘大有数据结构绿皮书】向LinkedList类中增加一个函数Contrary,功能为将其所有结点按相反次序链接。
  17. 只读事务是否做无用功?
  18. 加密狗android,Android系统加密狗的设计与实现
  19. 2019视频编码相关岗位招聘情况
  20. 开源:基于COF屏的雕刻机方案控制开源GRBL_ESP32

热门文章

  1. java中找不到符号indent_apache-poi – 如何使用apache POI XWPFDocument从java创建多级项目符号和编号?...
  2. 安卓不自动隐藏系统相机APP
  3. jmeter如何绕过登录做压力测试?
  4. 2022年5大直播趋势
  5. 不会整理收纳的人的思维方式和行为模式
  6. HTTP响应头和请求头信息对照表
  7. 【转】如何把压缩文件变成图片文件,图片后缀改成rar就可以解压
  8. 电感-温升电流-RMS电流-饱和电流-额定电流
  9. 百度云生成token
  10. udp和tcp的应用