[Android教程]Cordova开发App⼊门(⼀)创建android项⽬  前⾔
  Apache Cordova是⼀个开源的移动开发框架。允许使⽤标准的web技术-HTML5,CSS3和JavaScript做跨平台开发。应⽤在每个平台的具体执⾏被封装了起来,并依靠符合标准的API绑定去访问每个设备的功能,⽐如说:传感器、数据、⽹络状态等。
  使⽤Apache Cordova的⼈:
  1.移动应⽤开发者,想扩展⼀个应⽤的使⽤平台,⽽不通过每个平台的语⾔和⼯具集重新实现。
  2.web开发者,想包装部署⾃⼰的web App将其分发到各个应⽤商店门户。
  3.移动应⽤开发者,有兴趣混合原⽣应⽤组建和⼀个WebView(⼀个特别的浏览器窗⼝) 可以接触设备A级PI,或者你想开发⼀个原⽣和WebView组件之间的插件接⼝。
  —— 摘⾃《Cordova官⽹》
  Cordova虽然可以⽤来开发APP,但cordova并不能把H5代码变成IOS或者Android的原⽣代码。cordova只是将我们的Html⽂件通过相应的API,显⽰在HTML Rendering Engine(即WebView)中,同时 Cordova⽀持丰富的插件,这些插件提供了Cordova和原⽣组件相互通信的接⼝并绑定到了标准的设备API上。这就使开发者可以通过JS去调⽤原⽣代码,⽐如:照相机、联系⼈、热更新和打开第三⽅APP应⽤等。
  接下来,本⽂会⼀步步的介绍如何使⽤Cordova开发我们的第⼀个APP应⽤(本⽂主要介绍Android平台应⽤,IOS平台不做介绍)!
  使⽤Cordova的基本要求
  1.⾸先要会基本的HTML + CSS + JS(否则的话你开发个⽑线的app)
  2.不需要太⾼深的android开发经验,但起码的开发流程要了解
  3.需要⾃⾏搭建Android开发环境:⽐如SDK
  4.需要下载安装Node(⾃⾏百度)
  5.需要安装Cordova(npm install -g cordova)
图⽚描述
  创建APP
  # cordova create <;项⽬名> <;包名> <app名(可选)>
  cordova create d.cordova
  复制代码
  创建完成后的⽂件夹⽬录结构:
图⽚描述
  hooks:存放⾃定义cordova命令的脚本⽂件。每个project命令都可以定义before和after的Hook,⽐如:before_build、after_build
  platforms:平台⽬录,各⾃的平台代码就放在这⾥,可以放⼀下平台专属的代码
  plugins:Cordova插件⽬录,安装的插件会放在这⾥,cordova提供的原⽣API也是以插件的形式提供的
安卓开发教程 pdf
  www:源代码⽬录。在cordova prepare的时候会被copy到各个平台⼯程的assets\www⽬录中
  l:主要是cordova的⼀些配置,⽐如:项⽬使⽤了哪些插件、应⽤图标icon和启动页⾯
  添加Android开发平台
  xx\cordova-study\platforms>cordova platform add android
  Using cordova-fetch for cordova-android@~7.0.0
  Adding
  Creating Cordova project for the Android platform:
  Path: platforms\android
  Package: dova
  Name: HelloCordova
  Activity: MainActivity
  Android target: android-26
  Subproject Path: CordovaLib
  Subproject Path: app
  Android project created with cordova-android@7.0.0
  Android Studio project detected
  Android Studio project detected
  Discovered plugin "cordova-plugin-whitelist" l. Adding it to the project
  Installing "cordova-plugin-whitelist" for android
  This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version
  , you do *not* need this plugin since the whitelist will be built in.
  Adding cordova-plugin-whitelist to package.json
  Saved plugin info for "cordova-plugin-whitelist" l
  --save flag or autosave detected
  Saving android@~7.0.0 l file ...
  复制代码
  注:cordova在添加平台时,已⾃动安装了⼀个⽩名单(cordova-plugin-whitelist)插件
  导⼊Android Studio
  File --> Open --> 选择platforms-android下的adle,确定
图⽚描述
  等待IDE⾃动构建...
  构建完成后的⽬录结构如下:(我已切换到Android视图模式,图中箭头位置)
图⽚描述
  ⽬录内容解释:
  l:Android应⽤的⼊⼝⽂件,负责配置applaction和activity等
  java:Java⽂件,当前主要为Cordova项⽬默认的启动类(⼀般不需要关⼼,除⾮涉及到使⽤原⽣代码开发功能)
  assets:资源⽂件(H5应⽤的html、js、css等⽂件),需要注意的是,www中的cordova开头的⽂件或⽂件夹(如果使⽤到了⾃定义插件,会有个plugins⽂件⽬录),切记不可删除!切记不可删除!切记不可删除!
  res:app的配置:启动图标、应⽤图标、应⽤名称等。注意:xml中的l是app打包⽤的配置⽂件,可配置如:启动主页⾯、权限、⽩名单等
  使⽤cordova打包APP
  xx\platforms\android>cordova build android
  Android Studio project detected
  ANDROID_HOME=F:\AndroidSDK
  JAVA_HOME=D:\server\Java\jdk1.8\jdk1.8.151
  studio
  Subproject Path: CordovaLib
  Subproject Path: app
  Starting a Gradle Daemon, 1 busy and 1 incompatible and 1 stopped Daemons could not be reused, use --status for details   publishNonDefault is deprecated and has no effect anymore. All variants are now published.
  The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
  at build_dm9mufthcbtehnxb8j3px6xr.run(xx\platforms\android\adle:143)
  :CordovaLib:preBuild UP-TO-DATE
  中间省略......
  :app:cdvBuildDebug
  BUILD SUCCESSFUL in 1m 1s
  47 actionable tasks: 47 executed
  Built the following apk(s):
  xx\platforms\android\app\build\outputs\apk\debug\app-debug.apk
  复制代码
  提⽰BUILD SUCCESSFUL则表⽰打包完成,根据指定路径,获取apk后安装即可。
  常⽤的命令:
  cordova install android //将编译好的应⽤程序安装到模拟器上。
  cordova emulate android //在模拟器上运⾏(前提是创建好AVD)
  cordova serve android //在浏览器运⾏
  cordova build android //打包cordova项⽬到android平台。
  cordova run android //通过USB直接安装到真机(该语句已经包括了build命令)
  复制代码
  使⽤AndroidStudio打包APP
图⽚描述
  参考资料
  1.Cordova⼊门系列(⼀)创建项⽬
  2.Cordova之如何⽤命令⾏创建⼀个项⽬(完整⽰例)
  3.Cordova中⽂⽂档
  源码地址
  1.我的github
  2.我的码云
  欢迎关注,欢迎Star。当然,如果你直接下载了源码并不star,我也没办法(⼿动滑稽o(╯╰)o)。
图⽚描述
  (编辑:雷林鹏来源:⽹络)