背景:

这段时间在维护一个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. xshell链接linux出现SSH服务器拒绝了密码 的解决方案

    参考文章:https://blog.csdn.net/weixin_38554662/article/details/80589852 但是需要注意的是,ssh_config文件本来是没有权限修改的, ...

  2. 家用NAS配置方案

    对家用用户而言,NAS即一台下载机,硬件需要满足以下几点: 1.稳定性:24×7稳定无故障运行. 2.拓展性:较多的硬盘槽位,便于容量扩容: 3.体积小巧:占地面积小,便于放置. 4.方便远程管理:无 ...

  3. 如何录制视频生成GIF动态图?

    前言 在分享文章时有些知识不好讲清,就打算用gif图来展示,可是在网上找了几个录视频的工具都要会员才可以生成gif动态图,很是郁闷,不过苦苦寻找后,发现LICEcap很好用,可以很方便的生成gif动态 ...

  4. 面试题30:包含min函数的栈

      思路: 1.首先将栈的基本结构写出 #初始化栈的写法 def __init__(self): self.stack = [] #栈的压入 (加self是实例化,如果前面加入静态装饰器啥的,就不需要 ...

  5. 搭建邮件服务器 使用Postfix与Dovecot

    首先需要从yum中下载安装三个服务:bind-chroot    postfix     dovecot 配置文件依次: /etc/named.conf 下载安装完后要开启的服务:named     ...

  6. Cocos2d-x之物理引擎

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 在很多的游戏设计中一般都会涉及和模拟到真实的物理世界.然而游戏中模拟真实世界的物理会很复杂.使用已经写好的物理引擎会用很大的帮助和便利.  ...

  7. 为什么学python

    一.什么是Python Python [1](英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum发明. ...

  8. shell编程:sed的选项

    sed [参数] [partern/commond] file 标准输出 | sed sed [参数] [partern/commond] -n :使用安静(silent)模式.在一般 sed 的用法 ...

  9. 使用vue配合组件--转载

    1.由饿了么 UED (知乎专栏)设计的桌面端组件库已经开源,文档:Element,仓库: GitHub - ElemeFE/element: Desktop UI elements for Vue. ...

  10. 48-python基础-python3-字符串-常用字符串方法(六)-strip()-rstrip()-lstrip()

    7-用 strip().rstrip()和 lstrip()删除空白字符 strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符. lstrip()和 rstrip()方法将相应删 ...