Cordova 3集成Crosswalk

Crosswalk各版本下载地址
Language BUG
Galaxy Note 2闪屏
GapDebug Windows百度网盘

由于Android系统的碎片化严重,各种老旧webview对HTML5/CSS3支持的不好。在android各版本调试CSS兼容性简直就是噩梦,还要舍弃各种新的语法。
Crosswalk很好的解决了这个问题,他基于Chromium开发了强大的WebView,不仅解决了android webview碎片化问题,还支持各种HTML5/CSS3新语法。

缺点:

  • 集成Crosswalk后,应用体积增加20M左右
  • 只支持Android 4.0之后的系统(目前,4.0之前的市场占有率已经不足10%,Android Studio默认推荐的最低版本是API Level 15)

Cordova 4.0可以直接添加Crosswalk为插件,但是之前版本不支持,需要手动集成。 如果是新建的项目,直接根据官网添加就可以了。

选择Crosswalk

项目使用的是Cordova 3.6,Android 编译版本是4.4.2。

当初要集成Crosswalk时,项目已接近尾声,升级Cordova不现实,下载了多个Crosswalk版本,发现Android编译环境是4.4.2的最新版本是10.39.235.16,所以选择了此版本集成。

下载地址

集成Crosswalk

解压Crosswalk,可以看到如下目录结构,



在Eclipse中导入framework,以及framework下的xwalk_core_library.
File-->Import-->Existing Android Code Into Workspace


右键你的项目-->Properties-->Android,在Library中添加crosswalk依赖,并且移除对CordovaLib的依赖,如下图


语言BUG

集成Crosswalk后,JS中调用 navigator.language 总是返回en-US,这是Crosswalk的BUG

解决办法: 调用原生方法,在插件中加个方法调原生就可以了。

    /**
     * 获取系统语言
     * @param args
     * @param callbackContext
     * @throws JSONException
     */
    private void getLanguage(JSONArray args, final CallbackContext callbackContext) throws JSONException{
        String language = Locale.getDefault().getLanguage();
        callbackContext.success(language);
    }

三星Galaxy Note 2显示异常

在三星Galaxy Note 2上闪屏,这也是Crosswalk的BUG,通过关闭GPU Reasterization解决。

创建 assets/xwalk-command-line文件,文件内容只有一句话

xwalk --disable-gpu-rasterization

这个文件放在哪个project下?如果只放到你的主项目下,不起作用,framework和xwalk_core_library都添加此文件,肯定解决此问题。
不过,可能只放到fraemwork项目下就行,没有做测试,如果你有Galaxy Note 2可以做下测试。


以上就是项目集成Crosswalk的方法及问题处理,下面简单介绍下Debug工具。

GapDebug

GapDebug是免费的Crodova APP Debug工具,官网不翻墙可以打开,但下载需要翻墙,我在百度网盘上分享了Windows版本的,下载地址

打开GapDebug,连接手机,运行Cordova App,就能看到下图,左侧是连接的设备和APP,右侧就是Chrome的调试窗口,就不多说了。


Crosswalk调试

如果你的项目集成了Crosswalk,不需要GapDebug,也可以调试。

在Chrome中打开 chrome://inspect,如下图:


点击inspect

不过有点杯具的是,在第一次打开调试窗口时,要翻墙,这两种方式都是这样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,954评论 25 709
  • 关于 android Webview 基本使用 加载html四种方式 简单使用 在AndroidManifest....
    小面包屑阅读 10,849评论 2 13
  • 广州被称为花都一点都不为过,一年四季的花儿路旁,阳台,办公桌上。宜木的气候使得花木特别容易生长,加上离昆明也近,消...
    府罗将相阅读 1,562评论 0 0
  • 程序员的入门规划 1.我该学习什么语言? 这个问题困扰了几乎所有的程序员,比如java应用广好就业,比如php入门...
    tommy123阅读 7,334评论 1 16
  • 说到Git,必须要先谈一下版本控制。什么是版本控制?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,...
    voQuan阅读 5,563评论 0 2

友情链接更多精彩内容