Skip to content

发布繁琐且易出错 #6

@pengkobe

Description

@pengkobe

更多更全请参考: https://nxtfe.gitbooks.io/efos-app-spec/content/appfa-bu-liu-cheng-yu-gui-fan.html

痛点描述

Android

发布版

每次发布都需要手动修改很多内容,若是不小心修改错了,会需要热更新

  • 指定 apptype 为发布版,当前标识为 1
  • 关闭 debug 选项,注释到对应的标签
  • 修改起始页index.html 为热更新模式,涉及到标签的 开启/关闭,并修改为此次发布目录
  • 配置 manifest.json 页面版本
  • 手动拷贝文件到服务器
  • 修改下载页链接( AppDownload_release.html ),并上传覆盖
    • 不排除客户端缓存的还是以前的页面
  • 上传当前版本 Apk,格式示例: TEST1.1.0.apk
  • 修改数据库 AppVersion 表中信息
  • 发布通知至运营

测试版

  • 指定 apptype 为测试版,当前标识为 2
  • 修改起始页index.html 为热更新模式,涉及到标签的 开启/关闭,并修改为此次发布目录
  • 配置 manifest.json 页面版本
  • 手动拷贝文件到服务器
  • 修改下载页链接( AppDownload_test.html ),并上传覆盖
    • 不排除客户端缓存的还是以前的页面
  • 上传当前版本 Apk,格式示例: 1.1.0.apk
  • 修改数据库 AppVersion 表中信息
  • 发布通知至运营

IOS

发布版

  • 代码差异性,日常开发围绕安卓开发,在IOS平台极有可能出现问题,发布需要测试功能是否完整。发现问题不建议针对不同平台开发不同版本,否则难以维护,而是使用分支提高代码的可维护性,具体措施如下
css: .platform-android .platform-ios
js: ionic.Platform.isAndroid ionic.Platform.isIOS
  • 插件的差异性,日常开发围绕安卓开发的原因,发布IOS需要注意是否有插件新增,同时IOS应用权限管理严格,插件遵守精简原则
  • 指定 apptype 为发布版,当前标识为 1
  • 配置 manifest.json 页面版本
  • 修改起始页index.html 为热更新模式,涉及到标签的 开启/关闭,并修改为此次发布目录
  • 关闭 debug 选项,注释到对应的标签
  • 手动拷贝文件到服务器
  • 插件key的一致性
  • 应用权限,IOS10以后对权限管理严格,有使用权限未声明或声明权限未使用,都会导致app上传不成功
    • 目前解决措施:Cordova插件开发者觉得权限这一块确实容易忽略,有心的开发者会更新版本使得支持在plugin.xml配置插件使用的权限,并在插件安装的时候通过--variable的方式传入,如果插件不支持此功能,可以自己修改插件,这样一来权限相关就会记载在fetch.json当中,每次更新平台或者build代码都会自动配置好权限,而不是每次手动修改info.list文件。
  • 更新应用config.xml的版本号
  • 极光推送设置
    • 开启Capabilities->Push Notification,确认step状态都是勾
    • 开启并打开Capabilities->background modes->remote notification
    • 配置PushConfig.plist
  • 微信开放设置
    • 微信插件打包armv7s时报错,需要在build setting->Other Linker Flags设置并加入-Objc -all_load
  • 融云通信
  • 本地通知插件
    • 和安卓不同,安卓使用的是主分支,IOS使用的是IOS10的dev分支
    • build setting设置enable modules(c and object-c)设置为YES,否则编译报错
  • ibeacon
    • 勾选Capabilities->background modes->Location updates,否则API调用异常,很可惜,审核会被拒绝,新增一个专门判断蓝牙状态的插件解决isBluetoothEnabled调用异常问题
  • 兼容性设置
    • Base SDK选择lastest IOS
    • Deployment Target选择你目前支持的最低版本,如果有更低的要求,百度有方法解决
  • 指令集设置
    • architecture(想支持的指令集):armv7/armv7s/arm64
    • valid architecture(有效的指令集):armv7/arm64(选择armv7s,Ionic项目编译报错)
    • build active architectureonly(编译指令集):debug设置为YES(加快编译速度),release设置为NO(提高兼容性)
  • 打包发布,设置project-scheme-edit scheme build configuration选择release,executable选择应用

测试版

IOS发布需要审核,暂时没有IOS内部测试版本的发布

其它

  • 当前版本发布后,需要立即热更新一次才能生效
  • 暂时没有自动同步到 Android 应用市场的机制

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions