背景:

这段时间在维护一个Cordova混合项目,以前稍微接触过Cordova,也写过简单的纯纯的Cordova的Demo,但是没有尝试过混合原生的Cordova。

在接到项目后比较了一下项目架构和Cordova的结构,发现其中的差别还是不少,主要差别就在项目是通过原生的Activity去启动CordovaActivity的。经验告诉我:这个Cordova被嵌入了原生当中,这货是个混合App。

由于自己之前没有这样玩过,所以就开始从头学习一下如何去将Cordova嵌入原生做一个最简单的混合App,从简单开始,慢慢迭加。

下面进入正题:

、 就Android、Cordova的开发环境而言我这里不再详述。

、确认好环境后,首先建立一个Cordova项目(这个项目只是为了给正式的原生项目提供必要一些必要资源的临时项目),并添加Android平台再编译。指令如下:

$ cordova create CordovaProject
$ cd CordovaProject
$ cordova platform add android
$ cordova build
、然后使用Android Studio将上述项目中的Android平台所对应的子项目(Cordova\CordovaProject\platforms\android)打开,此时系统会无法正常编译,但是我们可以修改gradle和相关配置文件解决这以问题,然后项目就能正常编译了。
-、修改文件gradle-wrapper.properties中的distributionUrl为:
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip -、修改build.gradle中的classpath为:
buildscript {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
-、错误:Error:(, ) Could not find method implementation() for arguments ***** 将gradle中对应的implementation换成compile -、修改相关的js的Builder文件:  、platforms\android\cordova\lib\builders\StudioBuilder.js:将gradle的zip的版本改为3.(gradle-3.3-all.zip),将所有的implement替换为compile  、platforms\android\cordova\lib\builders\GradleBuilder.js:改动同上 、通过编译后再使用Gradle工具构造我们需要的jar包。 具体步骤:点击Android Studio右方的Gradle工具图标,找到CordovaLib->Tasks->build->assembleRelease,双击。 进入CordovaProject\platforms\android\CordovaLib\build\outputs\aar目录,解压其中的CordovaLib-release.aar文件,得到class.jar,这就是我们需要的jar包,将class.jar改为:cordova-8.0..jar。 、新建一个Android原生项目,项目名为:MyAndroid。将上一步的jar包导入此项目,关于Android Studio中怎样导入第三方jar包的具体操作本文不做介绍。 、拷贝assets文件。 具体操作:将临时Cordova项目(第2步中建立的项目)中的Android的assets文件(CordovaProject\platforms\android\app\src\main\assets),放入最终项目(第5步建立的项目)对应的目录中(MyAndroid\app\src\main)中。 、拷贝org文件。 具体操作:将临时Cordova项目(第2步中建立的项目)中的Android的org文件(CordovaProject\platforms\android\app\src\main\java\org),放入最终项目(第5步建立的项目)对应的目录中(MyAndroid\app\src\main\java)中。 、拷贝config.xml文件。 具体操作:将CordovaProject\platforms\android\app\src\main\res\xml\config.xml拷贝至MyAndroid\app\src\main\res\xml 、将MainActivity.java改为继承CordovaActivity.java,通过loadUrl(launchUrl)加载html页面。(当然,你也可以选择使用其他的Activity继承CordovaActivity来达到混合目的)。 、然后编译运行,你将看到如下错误: Error:Error converting bytecode to dex: Cause: Dex cannot parse version byte code. 解决方案:修改build.gradle(Module: app)中的defaultConfig,在其中加入jack允许: ...
defaultConfig {
...
jackOptions {
enabled true
}
}
、然后,运行成功。
---------------------
版权声明:本文为CSDN博主「d袋鼠b」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36570478/article/details/79040320

如何在原生Android项目里嵌入Cordova的更多相关文章

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

    前言 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cordova项目并添加Android平台,把我们的安卓项目导入Android平 ...

  2. 原生Android项目里嵌入Cordova

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

  3. 【React Native开发】React Native移植原生Android项目(4)

    ),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...

  4. Phonegap Android 项目使用Cordova

    要在已经创建好的Android项目里,使用Cordova. 1. 首先在Android Studio中创建Android项目 2. 创建cordova项目 cordova crate test com ...

  5. React Native移植原生Android

    (一)前言 之前已经写过了有关React Native移植原生Android项目的文章,不过因为RN版本更新的原因吧,跟着以前的文章可能会出现一些问题,对于初学者来讲还是会有很多疑难的困惑的,而且官方 ...

  6. C#-Xamarin的Android项目开发(一)——创建项目

    创建项目 使用Xamarin开发安卓项目,首先需要安装VS2017以上版本.因为VS2017以上的版本,可以直接创建Xamarin项目. 另外用Xamarin开发安卓项目,还需要使用Intel的CPU ...

  7. UCML 原生Android中嵌入Cordova Webview

    Android实现在当前进程打开网页可以将Cordova中的WebView嵌入Android项目中,实现简单,不需要自己实现,所以掌握如何嵌入WebView对项目快速开发很有帮助 官方也有这方面的教程 ...

  8. Cordova开发App入门之创建android项目

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

  9. web嵌入到原生的app里需要注意的事项

    1.https://www.cnblogs.com/shimily/articles/7943370.html 2.https://www.cnblogs.com/stoneniqiu/p/60771 ...

随机推荐

  1. 图解HTTP 读书笔记

    1 了解Web及网络基础 1.1   HTTP/1.0 HTTP正式作为标准被公布实在1996年五月,版本命名为HTTP/1.0,记载于RFC1945.至今仍广泛使用在服务器端. RFC1945 – ...

  2. Vue2.0---vuex初理解

    先来一张vuex的帅照 第一眼看到这张图片我内心是万匹草泥马飞过. 简单理解:  vuex:一个可以全局被使用的状态管理的“仓库”:state.js中定义初始状态,通过action去触发mutatio ...

  3. 垃圾循环li

    function hezhu() { // var lis= $("#aaa").find("treeview"); ////var lis= document ...

  4. 微信小程序发送红包功能。填坑记录

    微信官方文档 1.开通条件 (1)商户号已入驻90日 (2)商户号有连续30天正常交易 (3)只有企业资质的商户才有资格申请 2.注意事项 (1)目前小程序红包仅支持用户微信扫码打开小程序 (2)小程 ...

  5. 零基础如何快速学习好Python网络爬虫?

    Python网络爬虫上手很快,能够尽早入门,可是想精通确实是需求些时间,需求达到爬虫工程师的级别更是需求煞费苦心了,接下来共享的学习道路是针对小白或许学习Python网络爬虫不久的同伴们. 学习网络爬 ...

  6. tar.xz 解压

    解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包. xz -d Python-3.7.1.t ...

  7. redis的set()方法参数

    redis 127.0.0.1:6379> SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]   EX seconds − 设置指定的到期 ...

  8. 静态链表 C++版

    笔记静态链表的实现 #include "stdafx.h" #include<iostream> using namespace std; #define MAXSIZ ...

  9. ubuntu中下载pycharm并添加到桌面

    方法一:下载Pycharm与安装 下载地址:https://www.jetbrains.com/pycharm/ Pycharm专业版和社区版对大多数人来说差别不大,区别如下: 我们下载Linux的社 ...

  10. zoj 3777 Problem Arrangement(壮压+背包)

    Problem Arrangement Time Limit: 2 Seconds      Memory Limit: 65536 KB The 11th Zhejiang Provincial C ...