如何在原生Android项目里嵌入Cordova
背景: 这段时间在维护一个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的更多相关文章
- Android H5混合开发(3):原生Android项目里嵌入Cordova
前言 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cordova项目并添加Android平台,把我们的安卓项目导入Android平 ...
- 原生Android项目里嵌入Cordova
Android H5混合开发():原生Android项目里嵌入Cordova 如果安卓项目已经存在了,那么如何使用Cordova做混合开发? 方案1(适用于插件会持续增加或变化的项目): 新建Cord ...
- 【React Native开发】React Native移植原生Android项目(4)
),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...
- Phonegap Android 项目使用Cordova
要在已经创建好的Android项目里,使用Cordova. 1. 首先在Android Studio中创建Android项目 2. 创建cordova项目 cordova crate test com ...
- React Native移植原生Android
(一)前言 之前已经写过了有关React Native移植原生Android项目的文章,不过因为RN版本更新的原因吧,跟着以前的文章可能会出现一些问题,对于初学者来讲还是会有很多疑难的困惑的,而且官方 ...
- C#-Xamarin的Android项目开发(一)——创建项目
创建项目 使用Xamarin开发安卓项目,首先需要安装VS2017以上版本.因为VS2017以上的版本,可以直接创建Xamarin项目. 另外用Xamarin开发安卓项目,还需要使用Intel的CPU ...
- UCML 原生Android中嵌入Cordova Webview
Android实现在当前进程打开网页可以将Cordova中的WebView嵌入Android项目中,实现简单,不需要自己实现,所以掌握如何嵌入WebView对项目快速开发很有帮助 官方也有这方面的教程 ...
- Cordova开发App入门之创建android项目
Apache Cordova是一个开源的移动开发框架.允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发. 应用在每个平台的具体执行被封装了起来,并依靠符合标准的API绑 ...
- web嵌入到原生的app里需要注意的事项
1.https://www.cnblogs.com/shimily/articles/7943370.html 2.https://www.cnblogs.com/stoneniqiu/p/60771 ...
随机推荐
- (二)linux内核准备及编译
1. 内核下载地址 linux内核网站,可以拿到最新的和最近的稳定版本内核: https://www.kernel.org/ 通过网站下载压缩包后解压或者使用git下载到本地: git clone h ...
- jQuery-resize和scroll的性能优化
## 下面是进行测试和研究怎么实现的用的 Document 改变页面大小试试 Document 滚动滚动条试试
- MVC 入门
MVC是什么? MVC是一个框架模式,它用于把应用程序的输入.处理和输出进行强制性的分开.使用MVC应用程序被分成三个核心部件:模型.视图.控制器.它们各自处理自己的任务.最典型的MVC就是JSP+S ...
- 【转】Selenium 加载Chrome/Firefox浏览器配置文件
原文地址:https://www.cnblogs.com/eastonliu/p/9083982.html Selenium启动浏览器时,默认是打开一个新用户,不会加载原有的配置以及插件.但有些时候我 ...
- 实用|从0到1 搭建Web性能监控系统
工具介绍 1. Statsd 是一个使用Node开发网络守护进程,它的特点是通过UDP(性能好,及时挂了也不影响主服务)或者TCP来监听各种数据信息,然后发送聚合数据到后端服务进行处理. 常见支持的「 ...
- 转:父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承)
应作者要求,本处提供一个连接,表示对原作者版权尊重. https://blog.csdn.net/mr_duantao/article/details/50966471
- Windows盘符切换,Dos命令
>>.常用Dos命令 dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 del 删除文件 format 格式化 ...
- 阮一峰 ES6
阮一峰 ES6:http://es6.ruanyifeng.com/#docs/module
- python面试题之用列表解析式选出1-100中的奇数
[i for i in range(100) if i % 2 != 0](其实这里有很多种做法,比如最简单的用切片就可以了 list(range(100))[1::2]都不需要列表解析式本文首发于p ...
- 分批插入数据基于mybatis
DB框架:Mybatis.DataBase:Oracle. ---------------------------------------------------------------------- ...