# 一、简述
为规范管理与提高 APP 的质量,需严格按照规范进行开发。
# 二、版本说明
标准产品 M3 APP 只有一个版本,官网最新的版本。因此,无论客户服务端 A8 是 6.1系列、7.x 系列还是最新的 8.x 系列 M3 官网最新客户全部兼容。也就是说 M3 官网最新的客户端始终是向下兼容所有已发布的 A8(A6, G6) 版本。
注:M3 首次发布于 V5-A8(A6) V6.1 版本
# 三、源码获取
- 由区域发起【代码申请表】申请 Android 或 iOS 源码。
- 通过 ctp-studio SVN 获取最新版本的 Android 或 iOS 源码。(不建议使用低版本)
- 如客户需要做 VPN 二次封装,需要提供未加固版本的 Android 或 iOS 客户端也需要发起【代码申请表】或者相关的研发支持流程。
- 如果是致远研发体系内的同事需要源码,可以通过发起【svn-git权限管理单】流程申请移动端对应模块的源码。
- M3 源码始终只提供当前最新的版本,不提供以前老版本源码。
注意:1、任何以自由流程、微信、QQ、邮件或致信等方式申请源码,一律不提供。因特殊情况无法发起【代码申请表】、【svn-git权限管理单】或无法通过 ctp-studio SVN 获取源码的情况,需由研发相关领导确认并同意后才可以提供源码。2、VPN 二次封装也属于二次开发。
# 四、开发环境搭建
# 1. Android 开发环境搭建
推荐使用 Android Studio 4.1.x 以上版本(以下文档已 Android Studio 4.1.2 为例)。最新版本 Android Studio 下载地址:https://developer.android.google.cn/studio/ (opens new window)
# 第一步:Android Studio 安装:
略...
# 第二步:安装开发所需版本的 Android SDK:
启动 Android Studio ,点击 SDK Manager 安装需要的 Android SDK。点击【File】【Settings】【Appearance & Behavior】【System Settings】【Android SDK】在【SDK Platforms】选项卡中勾选 API Level 16、21、23、26、28 点击 【Apply】等等安装完成。如下图:
注意:API Level 会随着后续 M3 产品的版本更新会有变动。如最新的代码出现 Android SDK 版本问题导致编译或构建报错时,可以根据相关的报错信息添加对应的的 SDK 版本即可解决问题。
# 第三步:导入工程
点击【File】【Open...】选择对应的 M3 Android 工程根目录。一般 Android Studio 能自动识别 Android 工程,选择 M3 工程时也有对应的 Android 图标提示。如下图:
正确导入后 Android Studio 会自动进行首次工程编译,编译成功后在工程目录结构中可以看到以下结构。如下图:
# 第四步:首次构建
略...
# 2. iOS 开发环境搭建
# 第一步:下载安装 XCode
打开苹果应用市场 App Store 在搜索栏里输入 XCode 一般出现的第一个搜索结果便是最新版本的 XCode 版本。直接点击【获取】【安装】根据提示完成安装即可。如下图:
注意:根据苹果官方规定,最新版本 M3 iOS 客户端必须使用 XCode 12 及以上版本开发。
# 第二步:导入工程
启动 XCode 进入欢迎页面。点击【Open a project or file】选择 M3 工程文件,点击【Open】。如下图:
# 五、客开规范及常见问题
# 1、如何界定 APP 是客开版本
从严格意义上来讲,凡是非 M3 官网 https://m3.seeyon.com (opens new window) 以及应用市场上致远发布的 APP 版本,且对 APP 做了任何修改的版本均属于客开版本。其中也包含最小化的修改,如:VPN封装、替换 M3 图标、修改 APP 名称,以及任何二次打包后的 APP 等,均属于客开版本。
# 2、官方版本发布渠道
目前 M3 标准产品官方发布渠道一共有 5 个,分别如下: Android :
- M3 官方网站 https://m3.seeyon.com
- 华为应用市场
- 小米应用市场
- VIVO 应用市场 iOS: 苹果 App Store
注意:除以上渠道下载的 APP 是标准官方版本,其他渠道下载的均不属于标准产品。
# 3、客开版本必须要修改包名
因 Android 和 iOS 程序在系统中运行是已包名作为唯一的标识以及进程名称等。如果包名相同,在安装过程中会将已有的程序覆盖替换,甚至无法直接安装。且客开的 APP 如果与标准产品的包名相同,会导致客开的 APP 无法上传市场,无法正确注册和使用第三方的服务。 如:客开版本需要注册小米的推送服务,在小米官方进行注册的时候,需要填写 APP 的包名,因标准产品已经注册了对应的包名,如果这时在使用标准产品的包名进行注册是无法通过注册的。如果使用与 M3 不同的包名注册,那么 M3 是无法正常使用新注册的服务。
# 4、客开版本签名
首先,我们自己的官方标准的应用包签名证书是绝不对外提供的。因为对外提供我们自己的证书存在诸多风险。首先,证书本身有作为身份认证的作用。并且,对外提供证书可能导致证书被封,特别是苹果 iOS 证书。苹果对此有较强的管控,一旦发现证书在多个 APP 下使用会直接封掉对应的证书。因此导致所有使用该证书的应用将无法使用或强制下架。其次,我们有集成一些第三方的服务,部分第三方的服务申请是提供了 APP 证书,一旦标准产品的证书对外提供可能导致我们自己申请的服务无法正常使用。最终影响标准产品用户的使用。
# 5、客开 APP 离线消息推送配置
注意:任何客开的版本,标准产品的离线消息推送服务均不能直接使用。因此,原生程序中对应推送消息服务的 KEY (证书)配置需要进行修改。
修改推送配置主要是在 Android 端。在工程目录中打开 M3 Module 下的 build.gradle 配置文件,找到 defaultConfig 配置模块,修改对应的配置即可。如下图:
目前 M3 离线消息推送 Android 端主要只支持华为和小米,因此主要修改华为和小米的配置即可。
# 6、M3 客开离线消息推送切换本地服务配置
【请参阅:M3客开离线消息推送切换本地服务配置】
# 7、客开 APP 升级更新
因客开版本的特殊性,大部分客开的版本会一直停留在已发布的标准产品某个版本上。这就导致了后续因设备系统升级、服务更新(包括第三方)、标准产品本身 BUG 的修复等问题因无法快速处理客户问题。比如:某些 Android 系统设备出现 APP 崩溃问题。iOS 14/15 兼容问题等。因标准产品是定期检查更新和适配已存在的问题,并定期发布最新已修复的版本。而客开版本因不升级或更新导致问题一直存在或无法修复。因此建议客开的版本随时或定期关注 M3 最新的版本发布,并做好升级合并的相关工作。以确保 APP 能实时解决当前已存在的问题。
# 8、苹果开发者账号申请
# 9、海外用户申请 Google 地图 appKey 流程
# 10、APP 安全加固
因 APP 安全问题,标准产品在发布前会对 APP 做进行二次加固处理(第三方加固)。建议客开版本的 APP 在开发完成发布前也对 APP 进行二次加固。保证 APP 使用过程中的用户数据安全。
快速跳转
