在 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序列图:

更多相关文章

  1. 关于JAVA回调函数和Android事件响应
  2. android工程gen目录中R.java包名是怎么确定
  3. 设置ubuntu Android(安卓)sdk JDK环境变量
  4. react-native Android打包APK
  5. android 4.1版本的NotificationCompat兼容性问题
  6. onInterceptTouchEvent和onTouchEvent调用时序2
  7. Android培训班(16)
  8. ClassLoader原理剖析
  9. Eclipse新建Android项目报错解决方案详细汇总

随机推荐

  1. MySQL索引的各种类型
  2. 如何修改MySQL字符集
  3. 聊聊MySQL事务的特性和隔离级别
  4. MySQL GROUP_CONCAT限制解决方案
  5. MySQL 如何使用事务
  6. MySQL 数据库如何解决高并发问题
  7. MySQL 千万级数据量如何快速分页
  8. MySQL5.6升级5.7时出现主从延迟问题排查
  9. MySQL中文乱码问题解决方案
  10. MySQL 参数相关概念及查询更改方法