cordova开发坑
来源:互联网 发布:盈建科软件教学视频 编辑:程序博客网 时间:2024/06/11 12:20
1.config.xml
<allow-navigation href="http://*" />
<allow-navigation href="https://*" />
开启外部地址,以后需要做筛选
2.外部地址部署时候需要
新增cordova-js-src文件夹,plugins文件夹,cordova.js,cordova_plugins.js到服务器上,不然手机端cordova是白屏
3.插件问题
ios和android需要分开开发,然后合到一起,但是例如在ios系统里没有装android环境,插件是装不进去,需要删除android,或者配置android
4.Ios有时候平台都创建不了,因为用了不稳定的新版本
5.cordova run android 会覆盖掉build.gradle和AndroidManifest.xml自己添加的信息,插件里的androidmanifest.xml,一种一般只加插件时才用命令,其他情况,android需要独立编译测试。
6.基于正常的cordova工程,Android的fragment里使用cordova
public class DoctorFragment extends BaseFragment { private Unbinder unbinder; // @BindView(R.id.doctor_webview) SystemWebView webView; SystemWebViewEngine engine; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mContentView = inflater.inflate(R.layout.fragment_doctor, container, false); unbinder = ButterKnife.bind(this, mContentView); webView = (SystemWebView) mContentView.findViewById(R.id.doctor_webview); ConfigXmlParser parser = new ConfigXmlParser(); parser.parse(getActivity()); engine = new SystemWebViewEngine(webView); CordovaWebView cordovaWebView = new CordovaWebViewImpl(engine); cordovaWebView.init(new CordovaInterfaceImpl(getActivity()), parser.getPluginEntries(), parser.getPreferences()); webView.loadUrl("http://huanghuang.applinzi.com/www/index.html"); return mContentView; } @Override public void onDestroyView() { unbinder.unbind(); super.onDestroyView(); }}这里有个很坑, 因为代码中是解析本地的config.xml,如果我使用外部地址,那么config.xml里的content也保持一致才显示。
<content src="http://huanghuang.applinzi.com/www/index.html" />
7.startActivityfroResult的坑
this.cordova.startActivityForResult(cordovaPlugin, intent, REQUEST_CODE_TAKEPHOTO);第一次可以,第二次就直接返回cancel了,发现在CordovaInterfaceImpl的实现类里
@Overridepublic void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) { setActivityResultCallback(command); try { activity.startActivityForResult(intent, requestCode); } catch (RuntimeException e) { // E.g.: ActivityNotFoundException activityResultCallback = null; throw e; }}@Overridepublic void setActivityResultCallback(CordovaPlugin plugin) { // Cancel any previously pending activity. if (activityResultCallback != null) { activityResultCallback.onActivityResult(activityResultRequestCode, Activity.RESULT_CANCELED, null); } activityResultCallback = plugin;}每次都需要去设置回调activityResultCallback,如果不等于null,就直接回调取消了。导致无法收到第二次onactivityResult;去掉之后,发现没有用,然后继续跟踪:在CallbackContext里,发现两次的回调后finished由false变为true了,导致无法发送结果。
public void sendPluginResult(PluginResult pluginResult) { synchronized (this) { if (finished) { LOG.w(LOG_TAG, "Attempted to send a second callback for ID: " + callbackId + "\nResult was: " + pluginResult.getMessage()); return; } else { finished = !pluginResult.getKeepCallback(); } } webView.sendPluginResult(pluginResult, callbackId);}
后面采用下面方式是可以发送,后面又发现进入其他界面无效
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK,GsonParse.toJson(imageInfo));pluginResult.setKeepCallback(true);callbackContext.sendPluginResult(pluginResult);最后发现自己坑了自己,把图片控件写成了单例,导致每次初始化的时候callbackid都一样,后面每次都是先取消了,不用单例后,一切问题都好了
8.Android手机兼容性问题 远程加载cordova
deviceready has not fired after 5 seconds. cordova.js:1223
Channel not fired: onFileSystemPathsReady cordova.js:1216
Channel not fired: onCordovaInfoReady
a.尝试腾讯X5内核,一样超时 意味手机内核无效
b.corsswalk 一直未成功加载远程,暂时不知道为什么
c.尝试改变cordova.js加载顺序,
d.本地加载cordova 华为报另外一个错
尝试用https://www.npmjs.com/package/es6-promise直接引入,不行
尝试用http://www.ruanyifeng.com/blog/2016/01/babel.html 太麻烦了
http://blog.csdn.net/hsany330/article/details/73200935 还是ES6兼容性问题解决了。
9.
- cordova开发坑
- WebApp开发-CORDOVA踩过的坑
- ionic cordova开发android应用的坑
- WebApp开发-CORDOVA踩过的坑
- Cordova 10 VS2013配置cordova开发环境
- Android Cordova 插件开发之Cordova安装
- Android Cordova 插件开发之Cordova安装
- webapp开发使用Cordova-Cordova教程
- Android Cordova 插件开发之Cordova安装
- 【Cordova开发】cordova之PluginResult.java源码
- Cordova-----1、搭建Cordova开发环境
- Cordova插件开发
- Cordova插件开发
- Cordova配置与开发
- cordova开发入门<一>
- Cordova+ ios 插件开发
- cordova 混合开发
- Cordova插件开发
- CSS-flex布局 笔记
- 使用ajax异步上传文件数组到后台服务器
- 《琴.殇》
- [bzoj4930]棋盘 费用流
- SpringMVC学习笔记
- cordova开发坑
- androidStudio升级到2.3之后新建Activity布局变成了约束(ConstraintLayout)布局
- CJOJ 2307 【一本通】完全背包
- 北京联通IPTV机顶盒管理密码
- 学习总结-Thinking In Java Chapter 19 enumerated
- python list,map,lambda, set,filter
- CodeBlocks 的安装以及编译器的配置
- Python中使用中文字符
- java面向对象