前言

如果安卓项目已经存在了,那么如何使用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 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);

}

});

}

}

编译安卓项目,运行到手机

总结

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

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

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

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

源码已上传至网盘:

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

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

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

androidh5混合开发_Android H5混合开发(3):原生Android项目里嵌入Cordova相关推荐

  1. 前端游戏开发和h5前端开发_人们不告诉您有关前端开发的10件事

    前端游戏开发和h5前端开发 介绍 (Intro) Front-end development involves the building of webpages and user interfaces ...

  2. Android开发-在Android应用里嵌入腾讯广告联盟进行盈利实现

    前 言 对于个人开发者来说,独立开发一款基于网络App并且上线提供用户下载使用是需要花钱购买服务器的.而且当用户的并发量比较大时开发者所花费的维护应用的费用就越高,这时,个人开发者需要在应用里嵌入广告 ...

  3. 新建android项目导包,Cordova开发App入门(一)创建android项目

    前言Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的AP ...

  4. java安卓app开发教程_[Android教程] Cordova开发App入门(一)创建android项目

    前言 Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的A ...

  5. android 橡皮擦功能吗,android,安卓开发_Android 图片涂鸦橡皮擦功能,android,安卓开发 - phpStudy...

    Android 图片涂鸦橡皮擦功能 最近在做一个画板功能,大致的不同颜色画笔.不同粗细已经实现. 参照的是该教程:android-drawing-app 现在要做的功能是,从相册或者相机导入图像,然后 ...

  6. Android开发-在Android项目里集成友盟统计SDK进行对移动APP统计的实现

    前 言 友盟(Umeng),2010年4月在北京成立,是中国最专业.最有数据凝聚力的移动开发者服务平台.友盟以移动应用统计分析为产品起点,发展成为提供从基础设置搭建-开发-运营服务的整合服务平台,致力 ...

  7. Android开发学习:在Eclipse中导入Android项目方法

    在Eclipse中导入Android项目方法的具体步骤如下: 1.启动Eclipse,依次选择File---Import,如下图所示: 2.在弹出的Import窗口中选择Existing Projec ...

  8. Android应用开发高效工具集1---ant构建简单Android项目

    在java编译那些事儿中提到了用ant去编译Java项目,今天扩展到用它来构建Android项目,其实道理是相通的,变化的只是使用的形式.ant构建相比IDE的好处是多个子项目使用自定义jar包时,a ...

  9. 原生App项目集成flutter混合开发详细指南

    记得去年9月份的时候谷歌在上海有一次开发者大会,去参加的时候关注到了flutter,随后没过多久就发布了1.0版本.18年底的时候用flutter做了个小项目,发现flutter确实挺好用的.于是尝试 ...

最新文章

  1. [转] 关于Jmail
  2. 摄像头动态锁定(Python)
  3. 剑指offer(11-25题)详解
  4. 如何用Veripacks替换构建模块
  5. Android4开发入门经典 之 第七部分:数据存储
  6. java.lang.IllegalArgumentException: URLDecoder异常解决
  7. 小透明学弟的华为上岸之路
  8. 对称式加密和非对称式加密
  9. linux的I/O多路转接select的fd_set数据结构和相应FD_宏的实现分析
  10. Scala快速入门到精通 视频教程 百度云网盘下载地址
  11. 51单片机之步进电机实验
  12. js判断域名是否是合法http/https
  13. 【论文阅读】DNS隧道攻击检测算法整合
  14. shell数组 IFS
  15. 欺骗的艺术——第二部分(8)
  16. 团队管理2 | 管理的天时、地利、人和
  17. C++ 将字符串转换为浮点数
  18. excel电子表格插件_电子表格的美好时光
  19. Java 字符集编解码及乱码示例
  20. Django中使用富文本编辑器Uedit

热门文章

  1. java调用Linux mahout,Mahout算法调用展示平台2.1
  2. 曲线绕x轴旋转曲面方程_几何代数50 ----柱面及其方程
  3. iOS获取设备UUID和IDFA
  4. ASTreeView 1.4.0发布(ASP.NET树控件)
  5. 配置管理-CMMI的五个等级
  6. day21—AngularJS学习初体验
  7. 微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现
  8. 基于Prometheus+Grafana监控SQL Server数据库
  9. 活动丨4场直播华丽丽来袭,快来参与
  10. 比Redis快5倍的中间件,究竟为什么这么快?