前言

如果安卓项目已经存在了,那么如何使用Cordova做混合开发?

方案1(适用于插件会持续增加或变化的项目):

新建Cordova项目并添加Android平台,把我们的安卓项目导入Android平台(我们的安卓项目需要做目录结构、配置等很多内容调整),后续开发中,可通过命令在Codova项目中统一快速添加插件,进行原生与H5通信。

方案2(适用于插件较稳定的项目):

新建Cordova项目并添加Android平台,添加相关插件,将Android平台下H5代码、插件相关的内容导入到我们的项目中(我们的安卓项目目录结构、配置信息等变化较小)。后续开发中,如果新增、编辑插件,则无法直接通过命令在我们的项目中维护插件,需要在新建的Cordova项目中维护好,然后手动复制过来相关的文件。

本次讲解,我们使用第二种方案吧。实现也很简单,大致过程如下:

1.准备安卓项目

2.将Cordova项目的Cordovalib导入安卓项目,并在gradle中添加依赖

3.将Cordova项目的H5端代码(即/WWW/)拷贝到 /安卓项目/src/assets/下

4.将Cordova项目的config.xml拷贝到 /安卓项目/res/xml/下

5.将Cordova项目的于H5端约定的插件.java代码拷贝到 /安卓项目/src/对应包名下/(我们主要此处写代码)

6.将Cordova项目的WhitelistPlugin拷贝到 /安卓项目/src/下

注意,本次讲解:

1.我们新建一个项目mynativeapp作为已存在的安卓项目;

2.我们直接使用《Android H5混合开发(2):自定义Cordova插件》中的Demo作为Cordova项目;

1.准备安卓项目

在/TestCordova/mynativeapp/目录下,使用AndroidStudio创建一个普通的安卓项目,取名:mynativeapp,如下图:

2.将Cordova项目的Cordovalib导入安卓项目,并在gradle中添加依赖

一般方案:

使用cordova命令新建一个混合项目,添加android平台,里面包含Cordovalib。然后在我们的安卓项目中导入即可。



此处,我们直接导入上一节课 /Cordova项目/android平台下的Cordovalib:

3.将Cordova项目的H5端代码(即/WWW/)拷贝到 /安卓项目/src/assets/下

注意:因为咱们这里只是做Demo,实际上并没有找H5端的人员写这块的代码。在上一节课,咱们在Cordova项目的android平台中,已经写了个测试的H5代码,那么,就直接使用这个吧,如下图:

复制到/mynativeapp/src/assets/下
![复制过来的H5的代码](https://upload-images.jianshu.io/upload_images/10170988-46cf75f94b1bc855.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

4.将Cordova项目的config.xml拷贝到 /安卓项目/res/xml/下

我们将Cordova项目/res/xml/config.xml文件,拷贝到/mynativeapp/res/xml/下

5.将Cordova项目的于H5端约定的插件.java代码拷贝到 /安卓项目/src/对应包名下/

正常开发时,我们主要此处写代码。

在上节课,我们的自定义插件的代码已经有了,所以直接复制过来就可以了。

6.将Cordova项目的WhitelistPlugin(插件白名单)拷贝到 /安卓项目/src/下

准备工作完毕,开始测试

至此,安卓项目中所需的Cordova依赖、H5代码、插件相关信息都手动导入了。接下来我们测试一下H5的功能吧。

1.新建类TestCordovaActivity,继承CordovaActivity,加载index.html

package com.ccc.ddd;
import android.os.Bundle;
import org.apache.cordova.CordovaActivity; /**
* @author xc
* @date 2018/9/25
* @desc 测试H5的页面
*/
public class TestCordovaActivity extends CordovaActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // enable Cordova apps to be started in the background
Bundle extras = getIntent().getExtras();
if (extras != null
&& extras.getBoolean("cdvStartInBackground", false)) {
moveTaskToBack(true);
} // Set by <content src="index.html" /> in config.xml
// 加载H5首页
loadUrl(launchUrl);
}
}

2.MainActivity添加按钮,点击跳转至TestCordovaActivity页面

package com.ccc.ddd;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
TestCordovaActivity.class);
MainActivity.this.startActivity(intent);
}
});
}
}
  1. 编译安卓项目,运行到手机



总结

本章介绍了在已有安卓项目中如何使用Cordova,没有太多技术点。

如果有不明白的地方,建议去官网多查查资料。

[https://cordova.apache.org/docs/en/latest/)

Cordova的命令、插件的命令等只是方便我们快速管理维护项目和插件的工具。我们可以使用,但是不能太过依赖,要活学活用。



源码已上传至网盘:

https://pan.baidu.com/s/1THPUbfCgRQHZGLWy7_Zkww


Android H5混合开发(1):构建Cordova 项目

https://www.cnblogs.com/qixingchao/p/11654454.html

Android H5混合开发(2):自定义Cordova插件

https://www.cnblogs.com/qixingchao/p/11652418.html

Android H5混合开发(3):原生Android项目里嵌入Cordova

https://www.cnblogs.com/qixingchao/p/11652424.html

Android H5混合开发(4):构建Cordova Jar包

https://www.cnblogs.com/qixingchao/p/11652431.html

Android H5混合开发(5):封装Cordova View, 让Fragment、弹框、Activity自由使用Cordova

https://www.cnblogs.com/qixingchao/p/11652438.html

Android H5混合开发(3):原生Android项目里嵌入Cordova的更多相关文章

  1. Android H5混合开发(1):构建Cordova 项目

    Cordova是什么 Apache Cordova是一个开源的移动开发框架.允许你用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 以移动平台为例,安卓.IOS平台设备的常 ...

  2. Android H5混合开发(2):自定义Cordova插件

    前言 Cordova虽然定义了很多基础的插件,供H5端使用原生设备的功能. 但是,如果业务相关的功能,需要提供给H5端使用,那么,就需要我们自定义插件了. 这个"自定义"不是指由A ...

  3. Android H5混合开发(4):构建Cordova Jar包

    前言 上一节,介绍了原生项目如何嵌入Cordova,我们对Cordova的依赖使用的是CordovaLib Module,这也是安卓项目常用的方式. 但是,也有项目希望以Jar包的方式依赖Cordov ...

  4. Android H5混合开发(5):封装Cordova View, 让Fragment、弹框、Activity自由使用Cordova

    近期,有同事咨询如何在Fragment中使用Cordova,看了下Cordova源码,官方并没有提供包含Cordova Webview的Fragment,以供我们继承. 上网查询了一下,也有几篇文章讲 ...

  5. 原生Android项目里嵌入Cordova

    Android H5混合开发():原生Android项目里嵌入Cordova 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cord ...

  6. 如何在原生Android项目里嵌入Cordova

    背景: 这段时间在维护一个Cordova混合项目,以前稍微接触过Cordova,也写过简单的纯纯的Cordova的Demo,但是没有尝试过混合原生的Cordova. 在接到项目后比较了一下项目架构和C ...

  7. Android + HTML5 混合开发

    摘要: 对于 Android + HTML5 混合开发以下的观点仅仅是我的个人观点,如果有什么不对的地方请指正 简介: 混合开发的 App(Android + HTML5)就是在一个 App 中内嵌一 ...

  8. 移动端H5混合开发设置复盘与总结

    此篇接上一篇: 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案 https://www.cnblogs.com/buoge/p/9346699.html app 场布设置已经上线了, ...

  9. APP手机商城系统选择,混合开发与原生开发哪个好?

    关于手机APP开发用混合还是原生现在说法不一,有说混合开发好:时间短.费用低.效果也不错,有说原生开发好,原生APP在性能方面比较好.而商城系统中的手机APP用混合开发还是原生开发比较好呢? 最近我参 ...

随机推荐

  1. Flask基础(17)-->防止 CSRF 攻击

    CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. 包括:以你名义发送邮件,发消息,盗取你的账号 ...

  2. Linux 下复制整个文件夹的命令

    在 Linux 下复制整个文件夹,包括它的子文件夹及其隐藏文件的方法是: cp -r /etc/skel /home/user 或者 mkdir /home/<new_user> cp - ...

  3. C#中winform中panel重叠无法显示问题

    C#中winform中panel重叠无法显示问题: 最近开发一个项目有个需求是需要多个模式来回切换的,本来考虑使用多个窗口来实现这个功能,但是这样做浪费资源,而且工作量大,所以想到使用panel控件来 ...

  4. link 和 @import 的区别是什么?

    link语法结构: <link href="url" rel="stylesheet" type="text/css"> @im ...

  5. 【Java基础】Java开发过程中的常用工具类库

    目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. A ...

  6. Angular.js 入门(一)

    最近在学习angular.js,为此方便加深对angular.js前端框架的理解,因此写下这篇angular.js入门 首先介绍下什么是angular.js? AngularJS 是一个 JavaSc ...

  7. js仓库。。。

    <script type="text/javascript" src="//ra.revolvermaps.com/0/0/8.js?i=0ln1fndtptz&a ...

  8. mongoDB4.0数据库

    下载:https://www.mongodb.com/ 安装:略 注意:使用前修改bin目录下配置文件mongodb.cfg,删除最后一行的'mp'字段 1. 启动服务与终止服务 net start ...

  9. docker配置阿里云镜像

    今天docker pull镜像的时候太慢了  所以这里配置下阿里云镜像 打开阿里云控制台,没有的可以用淘宝账号或者支付宝账号直接登录 打开容器镜像服务,镜像加速器,复制加速器地址 修改配置文件 $: ...

  10. 程序员成长的四个简单技巧,你 get 了吗?

    最近拜读了"阿里工程师的自我修养"手册,12 位技术专家分享生涯感悟来帮助我们这些菜鸡更好的成长,度过中年危机,我收获颇多,其中有不少的方法技巧和我正在使用的,这让我觉得我做的这些 ...