Cordova 打包签名正式版APK

Cordova 打包签名正式版APK

为什么要签名

在完成APP的开发工作后我们需要对APP进行打包和签名,为什么要签名:
应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!
应用程序模块化:Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块
代码或者数据共享:Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。

如何签名

在项目根目录下运行命令cordova build --release,之后会在…platforms\android\app\build\outputs\apk\release目录下生成未签名的APK文件:
在这里插入图片描述
运行命令keytool -genkeypair -alias anytalk.keystore -keyalg RSA -validity 4000 -keystore anytalk.keystore
执行以上命令后,会要求填写密码口令,单位信息等等,这里需要记住录入的密码,因为最后编译apk的时候还需要用到,在所有的选项都录入完后,按回车,会在项目的根目录下生成一个anytalk.keystore的签名文件,里面就包含刚刚录入的一些信息。(第一个anytalk.keystore是别名,你也可以取别的名字,第二个anytalk.keystore是签名文件),下面是在网上找的一个设置图,如图所示:
生成签名文件
签名文件如下:
在这里插入图片描述
执行命令 keytool -list -v -keystore anytalk.keystore可查看签名文件相关信息。
将签名文件与未签名APK放在相同目录下,执行命令jarsigner -verbose -keystore anytalk.keystore -signedjar anytalk.apk app-release-unsigned.apk anytalk.keystore,输入之前生成签名文件录入的密码,经过编译,会生成最后的签名版本 anytalk.apk,如下图所示:
在这里插入图片描述 至此,就完成了apk的打包签名。