很久之前就想写这篇博客,但是一直没有时间,今天抽空来整理一下,总结一下cordova的创建、打包、签名apk。对于cordova所需的打包环境,如node,cordova的安装,这里就不再多说,度娘上有很多...
1.cordova命令创建一个项目
cordova create testApp com.test.app
这里testAPP是项目的名字,testApp com.test.app是APP的包名,可以随意取,最好按照“com.” 开头cd testApp
进入到刚刚创建的项目目录,可以看到如下文件目录:
说说目录中文件的用处
- hooks:里面就一个readme.md文件,没什么卵用
- platfroms:通过cordova platforms add android 添加的安卓相关文件就放在里面,这个文件夹比较重要,打包生成的apk也在这个文件夹下
- plugins:cordova安装的插件在此文件夹下
- res:存放资源文件,我没有用到过
- www:这个文件下写我们的项目,如html,js,css等代码
- .npmignore:忽略文件,没什么用处
- config.xml:打包项目的配置文件,可以修改APP的包名,应用名称等
2.cordova命令添加Android平台
cordova platforms add android
(如果是想移除Android平台的,可以运行cordova platforms remove android,也可以安装指定版本的Android平台,cordova platforms add android@6.3.0
)
运行命令后,会生成一些新文件夹,node_modules是依赖文件,在platfroms下面会生成新加入的Android平台文件
另外:
安装插件 cordova plugin add 插件名,如:cordova plugin add cordova-hot-code-push-plugin
卸载插件 cordova plugin remove 插件名,如:cordova plugin remove cordova-hot-code-push-plugin
查看安装的插件列表 cordova plugin list
3.cordova命令编译打包apk
cordova build android
执行命令后,会在testApp\platforms\android\build\outputs\apk目录下生成一个android-debug.apk,这就完成了一个简单的打包,把这个apk安装在手机上,就可以运行了。
但是,上面生成的是一个测试的apk,没有任何签名信息,不能上架到各大应用平台,下面来讲一下打包一个有签名的apk
apk签名
1.第一步
在项目根目录下运行命令cordova build --release android
,会在testApp\platforms\android\build\outputs\apk目录下生成一个android-release-unsigned.apk
2.第二部
运行命令keytool -genkeypair -alias name.keystore -keyalg RSA -validity 4000 -keystore name.keystore
执行以上命令后,会要求填写密码口令,单位信息等等,这里需要记住录入的密码,因为最后编译apk的时候还需要用到,在所有的选项都录入完后,按回车,会在项目的根目录下生成一个name.keystore
的签名文件,里面就包含刚刚录入的一些信息。
会在根目录下生成一个name.keystore
,这是apk独有的签名证书,如下图(命令中的name.keystore
中的name是签名文件的名字,这里可以任意取名,我习惯用name.keystore)
3.第三部
将testApp\platforms\android\build\outputs\apk目录下生成一个android-release-unsigned.apk重命名为name_unsigned.apk(我为了与name.keystore对应),并将它和根目录下的name.keystore
放在同一目录下
4.第四部
进入dabao
这个文件夹下,运行命令jarsigner -verbose -keystore name.keystore -signedjar name.apk name_unsigned.apk name.keystore
,输入之前签名的录入的密码,经过编译,会生成最后的签名版本 name.apk.
至此,就完成了apk的打包签名
希望这篇文章能帮助到需要的朋友~~~~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。