背景:这段时间在维护一个Cordova混合项目,以前稍微接触过Cordova,也写过简单的纯纯的Cordova的Demo,但是没有尝试过混合原生的Cordova。在接到项目后比较了一下项目架构和Cordova的结构,发现其中的差别还是不少,主要差别就在项目是通过原生的Activity去启动CordovaActivity的。经验告诉我:这个Cordova被嵌入了原生当中,这货是个混合App。由于自己之前没有这样玩过,所以就开始从头学习一下如何去将Cordova嵌入原生做一个最简单的混合App,从简单开始,慢慢迭加。下面进入正题:1、 就Android、Cordova的开发环境而言我这里不再详述。2、确认好环境后,首先建立一个Cordova项目(这个项目只是为了给正式的原生项目提供必要一些必要资源的临时项目),并添加Android平台再编译。指令如下:$ cordova create CordovaProject
$ cd CordovaProject
$ cordova platform add android
$ cordova build
3、然后使用Android Studio将上述项目中的Android平台所对应的子项目(Cordova\CordovaProject\platforms\android)打开,此时系统会无法正常编译,但是我们可以修改gradle和相关配置文件解决这以问题,然后项目就能正常编译了。
3-1、修改文件gradle-wrapper.properties中的distributionUrl为:
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip3-2、修改build.gradle中的classpath为:
buildscript {repositories {jcenter()maven {url "https://maven.google.com"}}dependencies {classpath 'com.android.tools.build:gradle:2.2.3'}
}
3-3、错误:Error:(262, 0) Could not find method implementation() for arguments *****将gradle中对应的implementation换成compile3-4、修改相关的js的Builder文件:1、platforms\android\cordova\lib\builders\StudioBuilder.js:将gradle的zip的版本改为3.3(gradle-3.3-all.zip),将所有的implement替换为compile2、platforms\android\cordova\lib\builders\GradleBuilder.js:改动同上4、通过编译后再使用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.0.jar。5、新建一个Android原生项目,项目名为:MyAndroid。将上一步的jar包导入此项目,关于Android Studio中怎样导入第三方jar包的具体操作本文不做介绍。6、拷贝assets文件。具体操作:将临时Cordova项目(第2步中建立的项目)中的Android的assets文件(CordovaProject\platforms\android\app\src\main\assets),放入最终项目(第5步建立的项目)对应的目录中(MyAndroid\app\src\main)中。7、拷贝org文件。具体操作:将临时Cordova项目(第2步中建立的项目)中的Android的org文件(CordovaProject\platforms\android\app\src\main\java\org),放入最终项目(第5步建立的项目)对应的目录中(MyAndroid\app\src\main\java)中。8、拷贝config.xml文件。具体操作:将CordovaProject\platforms\android\app\src\main\res\xml\config.xml拷贝至MyAndroid\app\src\main\res\xml9、将MainActivity.java改为继承CordovaActivity.java,通过loadUrl(launchUrl)加载html页面。(当然,你也可以选择使用其他的Activity继承CordovaActivity来达到混合目的)。10、然后编译运行,你将看到如下错误:Error:Error converting bytecode to dex:Cause: Dex cannot parse version 52 byte code.解决方案:修改build.gradle(Module: app)中的defaultConfig,在其中加入jack允许:...defaultConfig {...jackOptions {enabled true}}
11、然后,运行成功。
---------------------
版权声明:本文为CSDN博主「d袋鼠b」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36570478/article/details/79040320

转载于:https://www.cnblogs.com/Jeely/p/11319894.html

如何在原生Android项目里嵌入Cordova相关推荐

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

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

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

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

  3. 在Eclipse中的Android项目里实现代码复用

    引言 开发时通常都会有多个项目间代码复用的需求,这时通常的做法是设置项目依赖,让一个项目引用另一个项目,比如在Visual Studio中这样就很容易实现. 而在Eclipse中的Android项目里 ...

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

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

  5. 在Eclipse中的Android项目里实现代码“.NET研究”复用

    引言 开发时通常都会有多个项目间代码复用的需求,这时通常的做法是设置项目依赖,让一个项目引用另一个项目,比如在Visual Studio中这样就很容易实现. 而在Eclipse中的Andro上海徐汇企 ...

  6. android 内嵌地图,Android Fragment里嵌入高德地图【原创】

    最近在做的项目里要用到地图,看了一下高德地图的API,最后决定就用高德地图,和平时不同,这次地图是要嵌在Fragment了,研究了一下网上的代码,最后实现了.下面说一下实现2D地图的方法. 1.先去高 ...

  7. ANDROID项目中嵌入高德地图(一)配置环境+显示地图

    最近在做项目中嵌入高德地图的工作,觉得有必要记录一下嵌入过程,虽然高德官方给说明文档了,但有写并不明确需要去查类,查资料,再此把过程记录一下. 一.显示地图 1.配置AndroidManifest.x ...

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

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

  9. Cordova嵌入Android项目(CordovaWebView)

    Cordova嵌入Android项目(CordovaWebView) 首先,Cordova官方是有介绍如何将Cordova嵌入Android项目中的,链接Embedding Cordova WebVi ...

最新文章

  1. php中query()作用,query()方法
  2. Mac-终端hostname变为bogon的问题
  3. 完美解决Linux服务器tomcat开机自启动问题
  4. dalvik对于Java方法调用的实现
  5. 属性总结(一):marker
  6. Python异常处理try...except...finally raise assert
  7. 微软商业智能和分析平台高歌猛进,一骑绝尘,成为当之无愧BI分析平台的领导者
  8. 吴恩达机器学习5——神经网络的学习
  9. java模拟网易邮箱登录_java+selenium 实现网易邮箱登录功能
  10. cdev 结构体、设备号相关知识解析
  11. 【虎牙直播源】浏览器抓取真实直播源地址(纯前端JS解析源码)
  12. 视频工具下载(m3u8、MP4)
  13. 完美解决 报错原理 Unable to rename ‘XXXXXXXXX.jar‘ to xxxx
  14. HTML+CSS---进阶学习03
  15. 独立站如何做好社媒营销
  16. JS初中段考:袖珍西历
  17. 自动化测试工程师应聘要求
  18. PWM波控制舵机实验
  19. Java 中验证时间格式的 4 种方法
  20. 机器学习_吴恩达-总

热门文章

  1. threejs获取物体的坐标的最大值和最小
  2. ffmpeg视频压缩命令
  3. 试试kaggle竞赛:辨别猫狗
  4. 【Web】多读书多看报
  5. C# FTP操作工具
  6. mmkv跨进程,Android开发经验的有效总结,系列篇
  7. 不管是游戏还是动画都得靠它!你都知道吗?3DMAX角色建模教程—鼹鼠
  8. Python 实现数字的打印
  9. 报错:mysqld: [ERROR] Found option without preceding group in config file D:\software\mysql-5.7.19-winx
  10. 【步兵 工具篇】lzma算法,压缩字节流