同一套代码上架不同app之踩坑

背景:[email protected] (现在ionic@3x稳定版,[email protected] ),到我可能已经转了三四手,从一个写js两个月的前端er手里接下,这酸爽无法用言语表达。

需求:这套app是一两年前开发的,新客户有新需求,要求splash开机画面和icon都要改成他们公司的,所以要不同的包名,不同的签名.......一套代码要上架不同个app......可惜各种交接文件根本没有打包上架配置等内容,一切从头开始,所以记录一下坑。

1.事隔多年,公司没有一台电脑有完全配置(基本只保持了打包的功能),从公司svn上下载的项目居然还能缺少插件。所以相当于重新开个项目。Android Studio签名使用就不细说了,大多数问题是网络不好,文件下载不全而导致的错误,反正我是夜深人静wifi+4G热点流量+爬梯那个啥+试了n次才成功的。各种报错基本都能google到,很多都是自动加载新版本引起的版本冲突问题。

2.查看版本ionic platforms list。重新添加android platform,本来适配的页面结果超出手机的可视界面了。添加的平台版本跟以前一样,代码不变,但是原代码设置缩放比例在重新配置sdk和platform后就不适配手机了,但是没有这段代码(如下),直接用试了几个手机也没有适配问题,所以......以后有空了再去研究viewport吧。

在调试时:android和ios键盘弹起有不同的处理,(),视具体情况控制滚动条滚到底部,修改底部绝对定位尺寸。

varviewport = document.querySelector("meta[name=viewport]");

  varwinWidths = window.screen.width;

  vardensityDpi = winWidths /400;

  if(densityDpi <=1) {

    viewport.setAttribute('content', 'width=device-width, user-scalable=no,target-densitydpi=device-dpi,initial-scale=' + densityDpi + ',maximum-scale=' + densityDpi + ',minimum-scale=' + densityDpi);

  }else{

    viewport.setAttribute('content', 'width=device-width, user-scalable=no,target-densitydpi=device-dpi,initial-scale=' + 1 + ',maximum-scale=' + 1 + ',minimum-scale=' + 1);

  }

3.重新添加ios platform,本来statusbar是嵌入app的,结果多出来了,如下图1。原因就是sdk11了

解决办法:cordova plugin add cordova-plugin-disable-ios11-statusbar

4.ios打包

错误:duplicate symbol _OBJC_CLASS_$_CDVLogger

    解决方案:https://github.com/ionic-team/ionic/issues/12849

    ionic cordova platform remove ios(默认安装的是@4.5.5)

    ionic cordova platform add [email protected]

5.更新cordova插件 

a、错误:Failed to install 'cordova-plugin-fastrde-mqtt': CordovaError: Version of installed plugin: "[email protected]" does not satisfy dependency plugin requirement "cordova-plugin-network-information@^2.0.1". Try --force to use installed plugin as dependency.

根据提示先删除cordova-plugin-network-information,然后再安装对应版本cordova-plugin-network-information@^2.0.1

一般第一次装cordova-plugin-fastrde-mqtt会默认装相对应的依赖。

b、ionic build android错误: 无法将类 Wechat中的方法 getAppId应用到给定类型;

需要: 没有参数

找到: Activity

原因: 实际参数列表和形式参数列表长度不同

解决方案:将版本从2.3.0降到2.1.0

5. 微信应用是跟包名和签名绑定的,要上新app就要不同的包名,就要申请不同的微信移动应用,申请一次审核周期是7个工作日内。

检查android apk是否签名成功,到apk的目录下运行  jarsigner -certs -verbose -verify xxx.apk

讲下大概流程:

as制作签名文件->as打正式包->安装到android手机上,用微信的签名获取工具:GenSignature获取签名->微信开放平台创建一个移动应用获取AppID->等待审核完毕,然后按照微信开放平台资源中心文档进行开发。

碰到一个很尴尬的问题,ios能用微信的功能,android不能,最后发现是打包用错了签名文件(主要怪as制作签名文件太容易,然后密码记不住o(╥﹏╥)o)。不过一个好处是debug的时候把原代码中关于微信功能的代码捋了一遍。

反正这次把ionic 1x的ios和android从开发到打包上架都重新研究了一遍,各种bug熟悉了一遍(╮(╯▽╰)╭),google大段大段的英文也能看下去了(那什么感觉学了几十年的英语突破有望了),下一步就是前端框架的重构了,产品升级到ionic3x!

你可能感兴趣的:(同一套代码上架不同app之踩坑)