文档章节

Cordova 填坑备忘

liuxiaofan
 liuxiaofan
发布于 2017/12/21 22:48
字数 1613
阅读 120
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

  1. 按照官方文档 install 了 cordova 之后,在create 具体的项目之前,必须要安装好 Android SDK 切记,不然报错 code 254
  2. 安装了Android SDK后create项目还是可能报错,内容为什么文件的后缀名不是 tar zip 类似的,这是由于国内网络被墙,模板没有的缘故,需要在创建的时候选择一个模板,具体参考 官方文档 ,这里提供一个基本模板的名字
cordova create    文件夹名称   包ID    应用名称     --template cordova-app-hello-world 
  1. cordova 创建APP有一些依赖相,需要检查环境是否全部完成
cordova requirements

这里会出现一个叫 Gradle 的依赖项,Gradle具体的作用可以自行百度 这里我们不要安装,只需要把文件下载下来,放到系统自己生成目录下即可,也不用解压。系统指定的目录根据操作系统有差异。我用的是ubuntu 16.04 系统目录为

.gradle/wrapper/dists/gradle-4.1-all/bzyivzo6n839fup2jbap0tjew(这一串为系统生成,可根据具体情况自行决定)
  1. 使用cordova的事件 可以使用vue-cordova这个插件,具体参考代码库。有一点需要提醒。严格按照cordova官方教程中的调用顺序。先监听deviceready事件,其他的都在这个事件的回调函数中监听
// 示例 
Vue.cordova.on('deviceready', () => { // your code here this.$toast('ready') Vue.cordova.on('pause', () => { // your code here this.$toast('pause') }) Vue.cordova.on('resume', () => { // your code here this.$toast('resume') }) })
  1. 在使用localStorage时要记住,localStorage存储的都是字符串,bool类型也会转为字符串,同时对象类型要用JSON.stringify处理后存储。在取出来的时候要用JSON.parse解析一下。
  2. 想用localStorage初始化APP,对localStorage的操作不要放在Vue.cordova.on('deviceready')这个事件中操作,应为先执行vue,再执行cordova的事件,放在cordova的事件中,起不到初始化的目的,应为在这个事件之前数据已经被调用了。
  3. 想用device.platform 需要安装 插件
bash cordova plugin add cordova-plugin-device
  1. 关于media插件的使用问题
  • 关于new一个media类时有一个成功或者失败的回调函数,这些函数其实都是在你执行完record或者play的时候才调用的,并不是new后调用。
  • 在record的时候,传递一个src,这个src可以文件名,最好是用.m4a结尾,这样可以保证Android和iOS的兼容性,同时文件大小可以得到很好的控制
  • 在src使用文件名的时候,如果要用file-transfer上传,此时需要文件的完整路径,iOS和Android的路径是有区别的。
JavaScript if(device.platform == "iOS") { path = cordova.file.tempDirectory + filename; } else if(device.platform == "Android") { path = cordova.file.externalRootDirectory + filename; }
  1. cordova 插件在安装或者编译的时候出现错误Error: ENOENT时,可以考虑是不是platform版本太高,插件本身不支持。换一个低版本的试一下。

  2. 在集成极光推送的时候,如果创建项目的时候是采用的模板,并且没有指定包名,那么在集成的时候集成会失败,应为默认模板的包名为默认模板的包名,因此如果获取不到极光的ID,要全局搜一下默认包名,然后替换成自己的

  3. 在cordova build Android 的时候,报错为关于android:ttcIndex 资源找不到了,导致aapt启动不了。解决方案:传送门

  4. cordova打包的webapp 顶部底部滑动出现白色或灰色背景。解决方案:在 config.xml 中添加

  5. 解决Cordova开发的iOS的app界面被状态栏覆盖

  6. 在iOS的开发过程中,如果用xcode编译的话,默认使用的文件及配置都是staging这个文件下的,因此需要修改这个文件夹下的文件。

  7. 在iOS开发的过程中,有些需要权限,但是如果config.xml文件没有配置相应权限的话会导致APP崩溃,因此,需要配置权限。要么在config.xml配置,要么在resources下的plist文件内配置(同staging文件夹一样,默认使用此)

  8. 在iOS开发时,遇到上下滑动,fixed 元素消失的问题。解决方案为,把fixed元素移出上下滑动的div

  9. 打包ios运行上下滑动出现空白解决方法(webview)

  10. 百度地图缩放等级 参考地址

  11. 对于有录音需求的APP来说,cordova-plugin-media 这个插件生成的录音文件并不能在iOS和Android上通用,具体表现为,iOS的录音可以两个平台播放,Android录音,iOS不能播放。

// 修改 cordova media 插件源码
// android/java/org.apache.cordova/media/AudioPlayer
// 修改 startRecording 方法
this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC); this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
// 在录音中,iOS扩展名为m4a,Android扩展名为mp4
  1. jpush 推送,测试环境可以收到通知,生产环境收不到通知。这种基本上都是在xcode 9以后出现的。 做如下检查: 找到 TARGET -> Capabilities -> Push Notification 选项点开 找到Entitlements-Release.plist (位置在ios/{工程名}/文件夹内)文件,看看有没有 aps-environment 字段,没有补上。
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
</dict>
</plist>
  1. mint ui swipe 组件,当出现两张图同时显示时,并且不再滚动。解决方案如下:
// 1. 在 swipe 上添加  ref="swipe"
// 2. 在需要的地方使用下面的代码
this.$refs.swipe.next()
  1. mint ui loadmore 组件,当一个手指向下滑动,另一个手指点击页面的时候,如果此时,页面停住了,并且上边出现下拉刷新,解决方案如下。
搜索在 mint-ui 的loadmore源文件中找到 handleTouchEnd ,记得写event进去
handleTouchEnd: function handleTouchEnd(event) {...}
然后在down和up两个事件中加入 我标注的红字即可!

if (this.direction === 'down' && this.getScrollTop(this.scrollEventTarget) === 0 && this.translate > 0) {
event.preventDefault();
event.stopPropagation();
...
if (this.direction === 'up' && this.bottomReached && this.translate < 0) {
event.preventDefault();
event.stopPropagation();
...
  1. localstroage 在iOS内不可靠,因为OS会在内存不足时清理。因此,要实现永久存储数据,如果是简单的数据的话可以用cordova-plugin-nativestorage 这个插件代替。还有一个要注意的地方是,ios内多线程执行,因此最好注意顺序。如果getItem获取不到值的话,是会进入error函数内

© 著作权归作者所有

上一篇: PHP 生成 GIF
下一篇: Ubuntu 填坑
liuxiaofan
粉丝 0
博文 95
码字总数 38736
作品 0
枣庄
后端工程师
私信 提问
cordova+vue 项目打包成APK应用遇到的问题和解决方法

公司前端界面用的是vue,我要嵌入到Android中生成App 第一步:安装node node安装:直接进入官网https://nodejs.org/zh-cn/,下载最新版本安装。安装之后在命令行中使用”node -v” 检查安装是...

奋斗者—cyf
05/09
0
0
cordova 常用命令、插件

安装 cordova: npm install -g cordova 创建应用程序 cordova create hello com.example.hello HelloWorld 添加平台 cordova platform add android cordova platform add ios 完成后运行以下......

Jack088
2015/03/24
13.2K
2
ionic 常用插件 tips

本文不是插件详解,只是罗列公司上线项目中使用到的各种插件以及碰到的坑,如果像详细了解一个插件建议去其官方 github 查看。 ionic 插件的安装方法:ionic plugin add pluginName 我自己查...

flashback
09/29
0
0
cordova百度地图定位插件安装失败

cordova plugin add cordova-plugin-baidumaplocation失败: D:\hello>cordova plugin add cordova-plugin-baidumaplocation Fetching plugin "cordova-plugin-baidumaplocation" via npm Er......

雪凌寒霜
2017/07/27
157
0
Apache Cordova开发环境搭建(二)VS Code

原文:Apache Cordova开发环境搭建(二)VS Code 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011127019/article/details/56335719 Apache Cordova开发环境...

杰克.陈
2018/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
27分钟前
4
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
28分钟前
4
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
28分钟前
5
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
29分钟前
4
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
35分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部