背景:

这段时间在维护一个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. Linux awk 命令 说明

    一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是l ...

  2. Visual Studio Code - 调试 Node.js 代码

    官方的文档写的太好了!大家还是看参考资料吧. 参考资料: Debugging in Visual Studio Code Debug Node.js Apps using Visual Studio ...

  3. 关于CSS中的单位px、em、rem

    首先,px.em.rem都是相对单位: px(pixel像素)是相对于显示器屏幕分辨率的,IE无法调整那些使用px作为单位的字体大小: em是相对于当前对象内文本字体的尺寸,如当前对行内文本的字体尺寸 ...

  4. ajax请求controller出现中文乱码

    ajax请求controller出现中文乱码 解决方法:在 @RequestMapping 中加上  produces = {"application/json;charset=UTF-8& ...

  5. JNDI 笔记

    原理:         在DataSource中事先建立多个数据库连接,保存在数据库连接池中.当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池 ...

  6. qq传文件测试用例设计

  7. 电脑同时安装python2和python3 ,默认使用python3

    python3环境变量放在python2前面: 此电脑--属性--高级系统设置--高级--环境变量--系统变量--Path--编辑 D:\Python36\Scripts;D:\Python36;C: ...

  8. POI解析读写EXCEL,复制SHEET,兼容EXCEL93-2003,2007

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apa ...

  9. 在controller的action内, 得到用户发过来的请求地址和参数url

    class PController extends Controller{ public function Log() { echo $_SERVER["HTTP_HOST"] . ...

  10. 使用intellij的idea集成开发工具中的git插件(转)

    转自:https://blog.csdn.net/u012225679/article/details/71123171 注意:这里并没有介绍git客户端的安装,如果要安装客户端,大家可以参考如下的链 ...