首先说一下应用签名的原因,在android系统里面,系统通过应用签名标识app,一个app有debug版本和release版本,签名打包的app就是release版本;在android系统中,不能存在两个相同appid的应用,意思差不多就是说不能存在两个相同包名的应用,但是debug版本是可以调试的,如果最终用户安装的是debug版本,其他人可以通过调试获取app的日志输出信息,极不安全,所以最终用户安装的必须是release版本,但是release版本与debug版本也是不能同时存在的,要安装其中一个必须把另一个卸载掉,不然装不上。
企业级应用开发的时候一般都会有开发环境,测试环境以及正式环境,为了能够使得三个应用都可以安装在同一台设备上,每个应用的appid都应该不一样,然后开发人员安装的是开发版的debug版本,需求以及测试人员使用的是开发版的release版本,然后客户使用的是测试版的release版本,然后最终用户使用的是正式版的release版本。
1、创建android应用签名文件(以下都是以MAC系统为例):
keytool -genkey -v -keystore XXX-release.keystore -alias YYY -keyalg RSA -validity 4000
(执行命令之后会提示你输入密码,设置一些公司名称之类的,密码要记住,其他随意)
XXX-release.keystore :签名文件的名称(左边一个空格)
YYY :签名文件的别名(左右一个空格)
4000:有效天数
(命令执行完之后,应该会在当前目录下创建一个名为XXX-release.keystore)
2、创建release-singing.properties文件,内容:
key.store=XXX-release.keystore
key.alias=YYY
key.store.password=你设置的密码
key.alias.password=你设置的密码
3、(mac系统用户关注)创建build-extras.gradle文件,内容:
android {
lintOptions{ disable 'MissingTranslation', 'ExtraTranslation' }
}
4、创建完之后,将这三个文件拷贝到/项目根目录/platform/android目录下,执行
cordova build android –release
之后应该可以在
/项目根目录/platform/android/build/outputs/apk/
目录下找到android-release.apk文件,打包成功;
说一下其他无关的东西,通过命令
keytool -list -v -keystore ./xxx-release.keystore -storepass "你设置的密码"
可以查看release发布版本的信息,其中包括md5、SHA1等等字符串;
通过命令:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
可以查看debug开发版的信息。在使用一些cordova插件比如百度地图、高德地图的时候,需要用到这种SHA1,注意的~/.android目录是mac下的,window用户请自行跑到C:\Users\[USERNAME]\.android这个目录下执行,执行这个命令好像要安装android studio,具体情况不太清楚,因为我的mac是有android studio,但是window没有,也没有在window上试过。