Android集成Cordova与Crosswalk

article/2025/9/15 16:18:20

1. 介绍

1.1 Cordova

Cordova是贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎。Adobe将会继续以Cordova加上PhoneGap Build和Adobe Shadow的组合提供PhoneGap。
特性:
● 移动应用程序使用Html、Css、JS
● Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。
● 一次开发多个平台
● 开源免费

1.2 Node.js

Node.js是基于Chrome的V8 JavaScript引擎的JavaScript运行时环境。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。Node.js使用事件驱动的非阻塞I / O模型,使其轻量级和高效。Node.js的包生态系统,npm,是世界上最大的开源库的生态系统。

1.3 Crosswalk

Crosswalk 作为一款开源的 web 引擎,正是为了跨越这些障碍而生。目前 Crosswalk 正式支
持的移动操作系统包括 Android 和 Tizen,在 Android 4.0 及以上的系统中使用 Crosswalk 的
Web 应用程序在 HTML5 方面可以有一致的体验,同时和系统的整合交互方面(比如启动画
面、权限管理、应用切换、社交分享等等)可以做到类似原生应用。

2. 开发环境及搭建

2.1 Node.js、Cordova安装

首先去Node.js的官网下载并安装,然后打开命令行输入 npm install -g cordova 安装Cordova

2.2 创建项目

打开命令行执行:

cordova create Android6.2.1 com.blog.test CordovaTest

创建一个项目 cordova create 【文件名】【包名】【项目名】

cordova platform add android@6.2.1

安装Android平台6.2.1版本
Cordova Android版本已于2017年4月05日更新到了6.2.1版本,建议大家使用该版本。

2.3 编译运行

2.3.1 编译


当遇到上面提示的问题时,需要在环境变量中设置gradle的文件位置。
如果已安装Android Studio:
在【系统变量】栏新建一个变量GRADLE_HOME 变量值是gradle的文件位置

在系统变量【Path】中添加变量值 “;%GRADLE_HOME%\bin”

最后在命令行中输入gradle -version,检查是否配置完毕

如果没有安装Android Studio的:
在Gradle官网下载一个版本并解压,之后按照上述内容配置环境变量即可。Gradle3.3下载

2.3.2 运行

使用真机运行
cordova run anroid
使用模拟器运行 
cordova emulate android
使用网页打开
cordova serve

2.4 插件相关

cordova plugin ls
显示已安装的插件
cordova plugin add cordova-plugin-crosswalk-webview
安装Crosswalk插件
cordova plugin rm cordova-plugin-camera
删除插件
cordova plugin update
更新所有插件

3. Cordova使用

3.1 config.xml文件加载

config.xml主要标签介绍 (具体请见http://cordova.apache.org/docs/en/6.x/config_ref/index.html)
widget:id填写app所有人的域名,version填写app的版本号
name:app名称
description:app描述,会在app stroe里显示
author:app作者相关信息,会在app stroe里显示
content:指定app开始指向页面
access:指定app可进行通信的域名,*为所有
preference:偏好设置,可针对不同平台进行个性化设置。
如下图所示,ConfigXmlParser负责解析config.xml文件,然后将preference标签下的内容拿给CordovaPreference。

3.2 CordovaWebView赋值、初始化

3.3 显示网页

3.3.1 方式一:直接继承CordovaActivity(官网推荐)

public class VideoActivity extends CordovaActivity {@BindView(R.id.video)FrameLayout video_layout;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_video);ButterKnife.bind(this);loadUrl("https://www.baidu.com/");}@Overrideprotected void createViews() {FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);appView.getView().setLayoutParams(params);video_layout.addView(appView.getView());appView.getView().requestFocusFromTouch();}
}

3.3.2 方式二:自定义

public class VideoActivity extends BaseActivity {@BindView(R.id.video)FrameLayout video_layout;private CordovaWebView webView;private CordovaPreferences preferences;private List<PluginEntry> pluginEntries;private CordovaInterfaceImpl cordovaInterface;private boolean keepRunning=true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_video);init();cordovaInterface=makeCordovaInterface();if (savedInstanceState != null) {cordovaInterface.restoreInstanceState(savedInstanceState);}loadUrl("https://www.baidu.com/");}private void init(){ConfigXmlParser parser = new ConfigXmlParser();parser.parse(this);preferences = parser.getPreferences();pluginEntries=parser.getPluginEntries();}private void initWebView(){webView=new CordovaWebViewImpl(new XWalkWebViewEngine(this,preferences));FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);webView.getView().setLayoutParams(params);video_layout.addView(webView.getView());if (preferences.contains("BackgroundColor")) {try {int backgroundColor = preferences.getInteger("BackgroundColor", Color.BLACK);// Background of activity:webView.getView().setBackgroundColor(backgroundColor);}catch (NumberFormatException e){e.printStackTrace();}}webView.getView().requestFocusFromTouch();if(!webView.isInitialized()){webView.init(cordovaInterface,pluginEntries,preferences);}cordovaInterface.onCordovaInit(webView.getPluginManager());//音量控制// Wire the hardware volume controls to control media if desired.String volumePref = preferences.getString("DefaultVolumeStream", "");if ("media".equals(volumePref.toLowerCase(Locale.ENGLISH))) {setVolumeControlStream(AudioManager.STREAM_MUSIC);}}protected void loadUrl(String url){if(webView==null){initWebView();}webView.loadUrlIntoView(url,true);}//对照CordovaActivity中CordovaInterfaceImpl的实现及Activity的生命周期....
}

http://chatgpt.dhexx.cn/article/MZFlvNbc.shtml

相关文章

android crosswalk闪退,一篇文章读懂开源内嵌浏览器Crosswalk【转载】

本帖最后由 ecoolper 于 2014-12-24 17:55 编辑 Web技术的优势早已被广大 Crosswalk作为一款开源的web引擎&#xff0c;正是为了跨越这些障碍而生。目前Crosswalk正式支持的移动 Crosswalk有何优势&#xff1f; Crosswalk采用Chromium内核并不断地快速演进(六周一次更新)&#…

【Android】Crosswalk 开发浅析

最近的项目中&#xff0c;有用到phonegap&#xff0c;并需要展示一些需要高效渲染的网页&#xff0c;同情况下&#xff0c;IOS跑起来轻松无比&#xff0c;但是Webview。。。。&#xff08;泪奔&#xff09;&#xff0c;在焦头烂额的机型及版本适配中&#xff0c;发现了Crosswal…

android crosswalk 集成

crosswalk 集成 在项目根路径下的 build.gradle 中添加&#xff1a; buildscript {repositorities {……}}allprojects {repositories {……maven { url https://download.01.org/crosswalk/releases/crosswalk/android/maven2}}}在对应 module 的 build.gradle 中添加依赖&am…

Android 集成Chrome 浏览器内核 Crosswalk

Crosswalk 内核的兴起与消亡 Android 4.4 版本之前&#xff0c;使用的是基于 androidWebKit 的 WebView 但实际上&#xff0c;由于 Android 的碎片化问题&#xff08;大量存在不同的 Android 系统版本&#xff0c;并且各个厂商对内置应用进行定制化&#xff0c;有可能用的不是…

Android集成三方浏览器之Crosswalk

上一篇讲解了腾讯 X5 内核的集成&#xff0c;这一篇是讲解 Crosswalk 的集成 Crosswalk 也是采用了Chromenium 内核&#xff0c;是一款开源的 web 引擎&#xff0c;开发者可以直接把 Crosswalk 嵌入到应用之中&#xff0c;当然也支持共享模式&#xff08;系统中没有对应的 Cros…

CROSSWALK入门

Crosswalk是一款开源的web引擎。目前Crosswalk正式支持的移动操作系统包括Android和Tizen&#xff0c;在Android 4.0及以上的系统中使用Crosswalk的Web应用程序在HTML5方面可以有一致的体验&#xff0c;同时和系统的整合交互方面&#xff08;比如启动画面、权限管理、应用切换、…

Java和大数据的关系如何?

非常多的人&#xff0c;尤其是没有研究过&#xff0c;没有关注过这块知识的人都容易误解Java 和大数据的概念&#xff0c;甚至有些人认为大数据就是用java写的。 一&#xff1a;两者关系 java是计算机的一门编程语言&#xff1b;可以用来做很多工作&#xff0c;大数据开发属于…

java,大数据,

辅导&#xff0c;环境安装

Java?还是大数据?

IT 行业的人可能听过“ Java 大数据开发”这个名词&#xff0c;其实这并不是一个新岗位&#xff0c;而是因为大数据开发的编程语言以 Java 为主&#xff0c;掌握 Java 是进行大数据开发的基础&#xff0c;这才形成了“ Java 大数据开发”的说法。 随着 Java 开发岗人才供应趋于…

大数据开发-Java入门1

目录 1、计算机语言发展史1.1 计算机语言&#xff1a;1.2 常用的DOS命令&#xff1a; 2、java介绍与安装3、Java程序初体验3.1 Java开发三步走3.2 常见错误3.3 代码解释3.4 源文件名和类型 1、计算机语言发展史 1.1 计算机语言&#xff1a; 第一代&#xff1a;机器语言第二代…

JAVA 大数据方向 - 知识体系概况

JAVA 大数据方向 - 知识体系概况 想学后端&#xff0c;面临选方向&#xff0c;补充一下

学习Java大数据需要掌握哪些Java技能?

学习Java大数据需要掌握哪些Java技能&#xff1f;现在大数据发展很速度很多小伙伴想要学习Java大数据技术开发&#xff0c;但是学习大数据为什么需要掌握Java技能呢&#xff1f; 一、学大数据为什么要掌握Java&#xff1f; 首先&#xff0c;我们学习大数据&#xff0c;为什么要…

Java——处理大数据 BigInteger

整型 int型表示范围是&#xff1a;-(2的31次方) ~ (2的31次方) - 1 long型表示范围是&#xff1a;-(2的64次方) ~(2的64次方) - 1 浮点型 float和double是表示浮点型的数据类型&#xff0c;他们之间的区别在于他们的精确度不同float 3.402823e38 ~ 1.401298e-45&#xff08;e…

大数据必学Java基础(一百一十七):三个案例开发

文章目录 三个案例开发 一、记录请求日志 二、统计实时在线人数 三、项目重启免登录

大数据开发 - Java入门2

目录 Java基础知识注释关键字常量标识符测试题回顾 Java基础知识 注释 对程序的解释说明 分类&#xff1a; 单行注释&#xff1a;// 对本行后面的内容进行注释多行注释&#xff1a;/*解释内容 */文档注释 &#xff1a;/** 注释内容*/ --用于产生帮助文档&#xff0c;也有多行…

Java和大数据有什么联系?

提到Java&#xff0c;我们经常将它和大数据联系在一起。Java是一门面向对象编程语言&#xff0c;大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是一个概念性的东西。那么&#xff0c;Java和大数据有什么关系呢? 简单的说Java语言是…

java到大数据学习路线

计算机网络 操作系统 数据结构 计算机组成原理 可重点学习如下知识点 计算机网络&#xff08;重点看 OSI七层模型 或 TCP/IP五层模型 理解每层含义&#xff09;数据结构&#xff08;重点看 数组、栈、队列、链表、树&#xff09;算法&#xff08;重点看 各种 排序算法、查…

Java大数据文件处理方法

前言 Java大数据文件处理是一种使用Java编写的大型数据处理技术&#xff0c;特别适用于处理大型数据文件。在这篇文章中&#xff0c;我们将了解什么是Java大数据文件处理&#xff0c;为什么它很重要以及Java大数据文件处理的方法和技术。 一、什么是Java大数据文件处理&#…

大数据必学Java基础(一):Java体系结构、特性和优势

文章目录 Java体系结构、特性和优势 一、JAVA简史 【1】SUN公司 【2】Java为什么被发明

如果通过Java来完成大数据开发,需要学习哪些内容

首先&#xff0c;当前大数据领域的开发岗位确实比较多&#xff0c;近两年有不少大数据方向的研究生也会从事大数据开发岗位&#xff0c;而Java语言则是大数据开发人员的常用工具&#xff0c;所以如果要从事大数据开发岗位&#xff0c;可以重点学习一下Java语言。 大数据开发有…