`
rensanning
  • 浏览: 3545965 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38095
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607089
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682036
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89201
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401675
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69652
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91647
社区版块
存档分类
最新评论

Cordova 3.x 源码分析(7) -- CordovaLib概要

阅读更多
http://rensanning.iteye.com/blog/2020843已经介绍过通过Cordova CLI创建Cordova工程。

Cordova生成的Android工程主要来自于以下目录:
引用
C:\Documents and Settings\RenSanNing\.cordova\lib\android\cordova\3.4.0\bin\templates\project

其中所用的CordovaLib来自于以下目录:
引用
C:\Documents and Settings\RenSanNing\.cordova\lib\android\cordova\3.4.0\framework


从Cordova 3.3.0以后,方便调试,CordovaLib的提供形式从jar文件变成了Android Library。
参考:https://issues.apache.org/jira/browse/CB-5232

CordovaLib中的代码主要包括:
com.squareup.okhttp: 导入HTTP+SPDY客户端的OkHTTP,获取网络资源。
org.apache.cordova: 剩下的所有代码都在该包下(以前还有过org.apache.cordova.api)


基础类:
  • CordovaInterface.java CordovaActivity的接口(使plugin不依赖CordovaLib更独立)
  • CordovaActivity.java  应用的主Activity需要继承自该类。
  • Config.java 解析config.xml
  • Whitelist.java 白名单列表
  • LinearLayoutSoftKeyboardDetect.java 布局(检测软键盘)

Webview相关:
  • CordovaWebView.java 核心Webview类
  • CordovaWebViewClient.java 捕获Webview事件回调(2.x版本没有WebResourceResponse)
  • IceCreamCordovaWebViewClient.java 在3.x、4.x版本中拦截网页中资源请求,比如js,css,img,ajax
  • CordovaChromeClient.java 捕获JavaScript事件,其中onJsPrompt() 对应2.3模拟器的交互Bug
  • AuthenticationToken.java Http请求的认证
  • ScrollEvent.java 回传onScrollChanged事件坐标
  • CordovaResourceApi.java 获取资源

Plugin相关:
  • PluginManager.java 插件管理
  • PluginEntry.java 插件实体
  • CordovaPlugin.java Plugin的基类
  • CordovaArgs.java 接收JSON参数
  • PluginResult.java  执行结果
  • CallbackContext.java 通过sendPluginResult回传结果
  • ExposedJsApi.java JS桥接
  • NativeToJsMessageQueue.java 回传结果的消息队列

无用类:
  • DirectoryManager.java 3.1开始@Deprecated,移动了file的plugin中
  • ExifHelper.java 3.1开始@Deprecated,移动了camera的plugin中
  • FileHelper.java 3.1开始@Deprecated,移动了camera和file的plugin中
  • JSONUtils.java 3.1开始@Deprecated,无用类
  • DroidGap.java  2.7开始@Deprecated,DroidGap.java名字太难听,改成了CordovaActivity。参考:https://issues.apache.org/jira/browse/CB-2657
****这些文件中有些Java文件已经不再建议使用,在未来的某个版本将会被删除!!!

其他:
  • App.java  清缓存、loadUrl、退出程序等的plugin(以后会被单做成一个plugin)
  • LOG.java 日志util

Android WebView由于版本的问题,存在很多局限和Bug,而Android 4.4开始默认搭载Google的最新渲染引擎Blink/Chromium。
ChromeView使用Chromium代替WebView的一个实现,也有cordova-android-chromeview,不过更新比较慢。
Intel Crosswalk构建于Chromium之上,提供更加丰富的功能。同时提供了crosswalk-cordova-android
使用以上2中解决方案都能改善Webview的问题,但是同时你的apk文件的大小将增加20M左右。

程序入口:
public class CordovaSample extends CordovaActivity 
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        // 读取config.xml,设置UI
        super.onCreate(savedInstanceState);
        // 初始化Webview后添加到UI中
        super.init();
        // 加载首页file:///android_asset/www/index.html
        // 其中index.html是在config.xml中配置的。
        super.loadUrl(Config.getStartUrl());
    }
}


启动序列图:


Plugin序列图:
  • 大小: 8.8 KB
  • 大小: 129.5 KB
  • 大小: 104 KB
分享到:
评论
1 楼 sandheart 2015-11-02  
我怎么在新创建的项目里找不到下面几个类呢?
CordovaWebViewClient.java 捕获Webview事件回调(2.x版本没有WebResourceResponse)
IceCreamCordovaWebViewClient.java 在3.x、4.x版本中拦截网页中资源请求,比如js,css,img,ajax
CordovaChromeClient.java 捕获JavaScript事件,其中onJsPrompt() 对应2.3模拟器的交互Bug
AuthenticationToken.java Http请求的认证
ScrollEvent.java 回传onScrollChanged事件坐标
CordovaResourceApi.java 获取资源


cordova -v
5.3.1


相关推荐

    Cordova 3.x 源码分析(2) -- cordova.js概要

    同时,对源码的分析也有助于开发者定制和优化Cordova以满足特定项目需求。 在提供的`cordova_rensanning.js`文件中,很可能是对`cordova.js`的某种修改或分析版本,它可能包含了作者针对特定问题的解决方案或优化。...

    Cordova 3.x 实例开发 -- 基于Ionic的Todo应用

    **Cordova 3.x 实例开发 -- 基于Ionic的Todo应用** Cordova是一款开源的移动应用开发框架,它允许开发者使用Web技术(HTML、CSS、JavaScript)来构建原生的移动应用。Cordova 3.x是其早期的一个版本,尽管现在已...

    Cordova 3.x 基础(10) -- UI框架Ionic Framework

    在Cordova 3.x的基础上,开发者可以结合UI框架如Ionic Framework来构建美观且功能丰富的移动应用。 Ionic Framework是一个专为Cordova和AngularJS设计的开源HTML5移动应用框架,旨在提供一套完整的UI组件和工具,...

    cordova-2.9.1.jar

    实实在在经过ant编译的cordova-2.9.1.jar 而不是有些人坑蒙拐骗的rar文件

    cordova-hot-code-push-cli(热更新插件)

    热更新时,我们执行命令 npm install -g cordova-hot-code-push-cli安装插件,但运行cordova-hcp server会报错,如:Could not create tunnel: { Error: ngrok is not yet ready to start tunnels...,这时我们找到...

    Cordova 3.x 基础(7) -- Native API的使用

    例如,若要使用相机功能,你需要安装`cordova-plugin-camera`。使用命令行工具运行以下命令: ``` cordova plugin add cordova-plugin-camera ``` 2. **使用API**: 安装插件后,你可以在JavaScript代码中通过`...

    Cordova 3.x 基础(16) -- slides & books

    《Apache Cordova 3 Programming》这本书深入介绍了Cordova的各个方面,包括基础概念、开发流程、调试技巧、以及实际案例分析,是学习Cordova的宝贵资料。 9. **实战演练** 创建一个简单的Cordova应用,包括设计...

    Cordova 3.x 入门 - 目录

    比如,如果你想要访问设备的相机功能,可以添加`cordova plugin add cordova-plugin-camera`。每个插件都有相应的API文档供开发者参考。 7. **打包与发布**:完成开发后,可以使用Cordova提供的`cordova build --...

    Cordova 3.x 实用插件(1) -- Google地图Maps

    cordova plugin add cordova-plugin-googlemaps ``` 安装完成后,插件会自动在项目中添加必要的JavaScript和Native代码,使得我们可以调用Google Maps API。接下来,我们需要在HTML页面中创建一个用于显示地图的div...

    Cordova 3.x 基础(12) -- Plugin开发

    在“Cordova 3.x 基础(12) -- Plugin开发”这一主题中,我们主要探讨的是如何为Cordova应用开发自定义的插件。插件是Cordova生态系统的关键组成部分,它们允许开发者扩展Web应用程序的功能,使其能够充分利用设备...

    Cordova 3.x入门

    源码分析部分则是对于想要深入理解Cordova内部原理的开发者准备的,作者细致地解析了Cordova CLI、cordova.js的模块系统、事件通道、本地交互、以及CordovaLib概要等核心内容。 最后,实例开发部分,作者通过基于...

    Cordova 3.x 实用插件(2) -- 二维码Barcode

    cordova plugin add cordova-plugin-barcodeScanner ``` 一旦插件安装成功,你可以在JavaScript中调用其提供的API。例如,以下代码展示了如何启动扫描器并处理扫描结果: ```javascript window.plugins.barcode...

Global site tag (gtag.js) - Google Analytics