使用cordova打包apk
一:安装并配置jdk.
jdk的下载安装和配置,网上教程也很多,此处不再赘述。
二:安装Android studo
下载地址:http://www.android-studio.org/
安装完毕后,第一次打卡studio卡住,参考下文解决:
http://www.2cto.com/kf/201703/613266.html
三安装node
Window 上安装Node.js
可以采用以下两种方式来安装。
1、Windows安装包(.msi)
32位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86.msi
64位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x64.msi
2、Windows二进制文件 (.exe)安装
32位安装包下载地址 : http://nodejs.org/dist/v0.10.26/node.exe
64位安装包下载地址 : http://nodejs.org/dist/v0.10.26/x64/node.exe
四安装npm
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:
$ npm -v
2.3.0
如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,命令如下:
$ sudo npm install npm -g
/usr/local/bin/npm ->/usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.14.2 /usr/local/lib/node_modules/npm
如果是 Window系统使用以下命令即可:
npm install npm -g
使用淘宝镜像的命令:
cnpm install npm -g
Npm资源下载较慢有些需要FQ,可以安装cnpm,用cnpm下载国内资源
npm install -g cnpm --registry=https://registry.npm.taobao.org
也可以将npm切换成淘宝镜像地址,这样可以直接使用npm命令下载资源,速度会快很多,而其如果不修改npm,使用cordova的命令:cordovaplatform add android 会包如下错误:
将npm修改成淘宝镜像地址之后,可以解决此问题。
修改npm地址方法:
镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):
1.通过config命令
npm config set registry https://registry.npm.taobao.org
npm info underscore(如果上面配置正确这个命令会有字符串response)
2.命令行指定
npm --registry https://registry.npm.taobao.org info underscore
3.编辑 ~/.npmrc 加入下面内容
registry = https://registry.npm.taobao.org
五安装cordova
npm install -g cordova
过程较慢,耐心等待。
当安装完成之后,在命令窗口中输入以下命令,来验证cordova是否安装成功:
cordova -v
六、cordova的打包过程
(一)创建一个cordova项目
在命令行中敲入以下命令:
cordova create test com.example.test :其中第一个位置的test是指你的项目名,第二个位置的com.example.test是指你打包的apk的包名。
(二)增加cordova平台
进入你建立的项目目录test,在命令行中敲入以下命令:
cordova platform add android
此时可能会下载很长时间不能下载成功,最后报错。可以尝试一下方法
方法1:将npm资源地址修改成国内淘宝镜像地址:
Cmd执行如下命令:
npm config set registry https://registry.npm.taobao.org
npm info underscore(如果上面配置正确这个命令会有字符串response)
如果还存在此问题,可以尝试下面的方法:
方法2查看可用的android的版本
Crodova platform ls
查看对应的andriod的版本,例如6.2.2
使用命令cordova platform addandroid@6.2.2
方法3
cordova platform rm android && cordova platform addandroid
方法4:
cordova platform add android –nofetch
解决该问题可参考:https://issues.apache.org/jira/browse/CB-12767
https://stackoverflow.com/questions/35451207/cordova-error-failed-to-fetch-platform-android
(三)增加插件(可选步骤)
如果你想访问手机的一些资源,例如相机,sd卡之类的,你就需要安装一些插件:
cordova plugin add cordova-plugin-device
cordova plugin add cordova-plugin-network-information
cordova plugin add cordova-plugin-battery-status
cordova plugin add cordova-plugin-device-motion
cordova plugin add cordova-plugin-device-orientation
cordova plugin add cordova-plugin-geolocation
cordova plugin add cordova-plugin-camera
cordova plugin add cordova-plugin-media-capture
cordova plugin add cordova-plugin-media
cordova plugin add cordova-plugin-file
cordova plugin add cordova-plugin-file-transfer
cordova plugin add cordova-plugin-dialogs
cordova plugin add cordova-plugin-vibration
cordova plugin add cordova-plugin-contacts
cordova plugin add cordova-plugin-globalization
cordova plugin add cordova-plugin-splashscreen
cordova plugin add cordova-plugin-inappbrowser
cordova plugin add cordova-plugin-console
cordova plugin add com.cmpsoft.mobile.plugin.pushnotification
添加插件的过程可能需要等待一些时间
(四)编译打包
将你写的一些html、css、js文件放到你建的项目目录下的www文件下对应的位置:
然后在命令行下输入以下命令:
cordova build android
等待打包成功后,然后在项目的platform文件夹下找到apk安装文件。
执行cordova build android命令。
如果出现下面错误:
需要安装gradle
Gradle安装方法:
1、 手动下载gradle
https://services.gradle.org/distributions/gradle-3.5-bin.zip
2、添加环境变量
PATH=D:\Program Files (x86)\gradle-3.5\bin
3、关闭cmd
4、打开cmd,输入gradle-v,查看是否安装成功
(五)签名
上述操作默认生成的apk是未签名的,APK都必须经过数字签名后才能安装到设备上,签名需要对应的证书(keystore),大部分情况下 APK 都采用的自签名证书,就是自己生成证书然后给应用签名。
数字证书:
数字签名证书是给APK打包所必需的文件,所以我们先要把数字签名证书生成。在命令提示符下输入 keytool -genkey -v -keystore D:\mytest.keystore -alias cordova-demo-keyalg RSA -validity 20000
-keystore D:\mytest.keystore表示生成的证书及其存放路径,如果直接写文件名则默认生成在用户主目录下;
-alias cordova-demo 表示证书的别名是cordova-demo;
-keyalg RSA 表示采用的RSA算法;
-validity 20000表示证书的有效期是20000天。
根据指令输入密钥库口令,是不可见的。
依次输入下面的问题。最后到【否】那里时输入y
再输入密钥口令(可以与密钥库口令相同),如果相同,直接回车,记住这两个口令,后面签名会使用到。
这时便会生成一个文件mytest.keystore,就是我们需要的签名文件。
Apk签名
生成带签名的apk有两种方式,一种先生成未签名debug版本,再加上数字签名证书然后生成带签名的APK。另外一种就是直接一条命令生成带签名的APK。
第一种,先生成未签名的debug版本的apk
即首先直接cordova build android --release,然后会生成一个android-release-unsigned.apk。把数字签名放到生成的未签名的apk所在的目录下,输入以下命令:
jarsigner-verbose -keystore /yourpath/demo.keystore -signedjar/yourpath/demo_signed.apk /yourpath/demo.apk /yourpath/demo.keystore
例:
jarsigner -verbose -keystore mytest.keystore-signedjar demo_signed.apk 123.apk mytest.keystore
这时的apk就会是一个已经签名的apk了,修改一下名字即可直接放到设备上安装。
第二种,直接生成带签名的apk
有了数字签名之后,数字签名需要放在cordova项目根目录下或者可以修改下面指令的keystore里的路径可以直接在cordova build 中指定所有参数来快速打包,这会直接生成一个android-release.apk(已经是带签名的了)给你
cordova build android --release -- --keystore=mytest.keystore--alias=cordova-demo --storePassword=testing --password=testing1
· 查看apk的签名
查看签名是否成功,可将签名后的文件,后缀名apk的改为zip,解压。
在该目录下,输入如下命令:
keytool -printcert -file META-INF/CERT.RSA