cordova开发环境搭建_搭建cordova开发环境-程序员宅基地

技术标签: java  vue  

最近我在尝试了解跨平台技术的发展,首先则是想到了cordova。本文简单记录下cordova环境搭建的过程。

安装cordova

首先是要npm全局安装cordova

npm install -g cordova

创建应用

安装的cordova类似于create-react-app这种脚手架,可以通过命令行直接创建应用

cordova create myapp

添加平台支持

cordova可以支持ios, android, web三端。

cordova platform add ios
cordova platform add android
cordova platform add browser

在这里插入图片描述

进入android目录下,可以看到很多.java文件,而ios目录下是很多的object-c文件,browser目录下则是熟悉的web工程。

并且可以看到,每个平台下都有一个cordova目录,我初步猜想,这应该是负责和不同平台通讯交互的cordova核心。

运行App

Web

web端是最直观最简单的,直接运行如下命令即可。

cordova run browser

Android

对于AndroidIOS,我们则需要先检查相关环境是否安装正常。

$ cordova requirements

Requirements check results for android:
**Java JDK: installed 1.8.0**
**Android SDK: not installed**
Failed to find 'ANDROID_HOME' environment variable. Try setting it manually.
Detected 'adb' command at C:\Windows\system32 but no 'platform-tools' directory found near.
Try reinstall Android SDK or update your PATH to include valid path to SDK\platform-tools directory.
Android target: not installed
android: Command failed with exit code ENOENT Error output:
'android' �����ڲ����ⲿ���Ҳ���ǿ����еij���
���������ļ���

**Gradle**: not installed
Could not find gradle wrapper within Android SDK. Could not find Android SDK directory.
Might need to install Android SDK or set up 'ANDROID_HOME' env variable.

Requirements check results for browser:

Requirements check results for ios:
Apple macOS: not installed
Cordova tooling for iOS requires Apple macOS
Some of requirements check failed

可以看到,我的电脑环境并不满足androidios平台的要求。

首先我们来满足下android平台的环境要求。

JDK

首先是JDK,可以通过javajavac命令来检查下。

C:\>java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

如果没安装,可以参考jdk下载与安装简明教程

Gradle

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。

具体安装过程可以参考gradle环境搭建

Android SDK

首先我们安装Android Studio。根据安装指引,我们会安装好Android SDK

在此安装过程中,遇到了一个报错:

Android SDK Tools, SDK Patch Applier v4 and 5 more  SDK components were not installed

感谢这位大佬提供的解决方案,迅速解决了问题,这里顺便记下SDK的安装目录。

C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk

接着我们需要在环境变量-系统变量-Path中新增两项:

C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk\platform-tools
C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk\tools

并且新增一项系统变量ANDROID_HOME,变量值为:

C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk

试运行命令cordova run android,出现了如下警告

$ cordova run android
Checking Java JDK and Android SDK versions
ANDROID_SDK_ROOT=undefined (recommended setting)
ANDROID_HOME=C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk (DEPRECATED)
Starting a Gradle Daemon (subsequent builds will be faster)

于是我又新增了一项系统变量ANDROID_SDK_ROOT,变量值与ANDROID_HOME一样。

重新跑cordova run android命令,首先看到警告如下:

> Configure project :app
Checking the license for package Android SDK Platform 28 in C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk\licenses
Warning: License for package Android SDK Platform 28 not accepted.

上网一查,原来是没有同意相关协议。我们来到C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk\tools\bin目录下运行命令行,输入sdkmanager --licenses,然后就会弹出一堆协议,没办法,无脑输入y同意吧。

再次运行cordova run android,发现了新的报错信息:

No target specified and no devices found, deploying to emulator
No emulator images (avds) found.
1. Download desired System Image by running: "C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk\tools\android.bat" sdk
2. Create an AVD by running: "C:\Users\Jiang.Wenbin\AppData\Local\Android\Sdk\tools\android.bat" avd
HINT: For a faster emulator, use an Intel System Image and install the HAXM device driver

可以看到,是没有找到设备的原因。需要将手机连接到PC,并且打开开发者选项,允许USB调试。再次尝试,已经可以看到界面了。

Plugins

我们来试试调用一些原生API,比如调用原生Dialog, 调用相机等。我们先试下Dialog

Dialog

首先需要插件:

cordova plugin add cordova-plugin-dialogs

接着我们在deviceready事件之后调用Dialog

document.addEventListener('deviceready', onDeviceReady, false);

functiononDeviceReady() {
    navigator.notification.alert(
        '欢迎欢迎!',  // message
        alertDismissed,         // callback'试下Dialog',            // title'好的'// buttonName
    );
}

functionalertDismissed() {
    // 点击按钮后的回调
}

调试后发现弹出的中文乱码了,需要在index.html加个meta

<metacharset="UTF-8">
Camera

接着我们试下调用相机,首先也是安装插件:

cordova plugin add cordova-plugin-camera

尝试调用相机拍照,并将得到的照片通过img元素显示出来:

// Application Constructorinitialize: function() {
    const _this = this;
    document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    // 点击按钮打开相机document.querySelector('#btnOpenCamera').addEventListener('click', function() {
        _this.openCamera()
    })
},
openCamera: function() {
    const cameraOptions = {
        // 默认输出格式为base64destinationType: Camera.DestinationType.DATA_URL,
        // 输出png格式encodingType: Camera.EncodingType.PNG
    };

    navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions);

    // 相机拍照成功functioncameraSuccess(base64Str) {
        console.log(base64Str)
        // 给图片元素赋值srcdocument.querySelector('#captureImg').src = prefixBase64PNG(base64Str)
    }

    functioncameraError(err) {
        console.error(err)
    }

    functionprefixBase64PNG(base64Str) {
        return'data:image/png;base64,' + base64Str;
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z_robot/article/details/116740323

智能推荐

CSS中的圆角和阴影

在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。(必需值)水平阴影(horizontal shadow),可以为负值。(必需值)水平阴影(horizontal shadow),可以为负值。(必需值)垂直阴影(vertical shadow),可以为负值。(必需值)垂直阴影(vertical shadow),可以为负值。(可选值)将外(盒子的背面)阴影改为内(盒子之上)阴影。CSS3 中新增了盒子阴影,可以使用。属性为盒子添加阴影。(可选值)阴影模糊程度。(可选值)阴影模糊程度。

springcloud第4季 springcloud-alibaba之sentinel2

多语言异构化服务架构的流量治理组件,主要以流量为切入点,从。等多个维度来帮助开发者保障服务的稳定性。sentinel是面向。

OpenHarmony语言基础类库【@ohos.url (URL字符串解析)】

本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

浏览器安全之同源策略_浏览器同源策略-程序员宅基地

文章浏览阅读1.2k次。明确定义集成系统之间的接口和端点。确定HTTP请求和响应的格式,包括使用的数据编码格式(如JSON或XML),以及请求和响应的头部信息。定义HTTP的接口,首先应该确定接口功能和目标,明确接口的目的和提供的功能。确定接口所要实现的业务逻辑或服务,并理解它在整个系统中的角色和作用。然后选择HTTP方法和端点,根据接口的功能,选择合适的HTTP方法(如GET、POST、PUT、DELETE等)来表示接口的操作类型。同时,定义接口的端点(Endpoint),即接口的URL路径,例如:/api/users。_浏览器同源策略

【ARM 裸机】BSP 工程管理

ARM 裸机,BSP 工程管理,之后的工程结构一目了然,层次分明,不再乱乱了

三 STM32F4使用Sys_Tick 实现微秒定时器和延时_stm32如何实现定时器-程序员宅基地

文章浏览阅读3.3k次,点赞46次,收藏48次。时钟是由电路产生的周期性的脉冲信号,相当于单片机的心脏。_stm32如何实现定时器

随便推点

grpc.WithInsecure已弃用_grpc.withinsecure()-程序员宅基地

文章浏览阅读1k次。grpc.WithInsecure()已弃用_grpc.withinsecure()

人工智能技术概述_3.机器学习

广义上来说,机器学习指专门研究计算机怎么模拟或实现人类的学习行为以获取新的知识或技能的学科,使计算机重新组织已有的组织结构并不断改善自身的性能。更加精确地说,一个机器学习的程序就是可以从经验数据E中对任务T进行学习的算法,它在任务T的性能度量P会随着对于经验数据E的学习而便得更好。

CSS实现广告自动轮播

实现原理该广告轮播功能的实现主要依靠HTML和CSS。HTML负责搭建轮播框架,而CSS则控制样式和动画效果。通过CSS中的关键帧动画(Keyframes),我们可以定义图片在容器内的滚动效果,从而实现轮播功能。

liunx下pwn环境搭建_pwn tmux-程序员宅基地

文章浏览阅读610次。0. 环境准备Ubuntu 20.04x86_64(cpu架构如果不)python3.8.*_pwn tmux

Pycharm新建工程时使用Python自带解释器的方法

我的Python自带的解释器路径:C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe。新建Project时最好不要新建Python解释器,实践证明,自己新建的Python解释器容易出现各种意想不到的问题。Pycharm新建工程时使用Python自带解释器的方法。那么怎样使用Python安装时自带的解释器呢?看下面的三张截图大家就清楚了。

ORACLE 11G利用 ORDS+pljson来实现json_table 效果_oracle pljson-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏4次。Oracle 在12.1中引入了对json的支持,可以利用sql来查询json字段,对于11G的版本,例如EBS环境,可以利用开源软件pljson 来实现。json数据源实例下面这一段就是要处理的json,是多层次的机构{ "PONumber": 1608, "Requestor": "Alexis Bull", "CostCenter": "A50", "Address": { "street": "200 Sporting Green", "city": "South San ._oracle pljson

推荐文章

热门文章

相关标签