一、gradle构建自动生成签名
4.在gradle中配置签名信息
我们都知道Android使用gradle来构建版本,因此我们也希望在gradle中配置好签名信息,在打包apk时更方便。
在项目的build.gradle中,android下加入signingConfig信息。
5.jks与keystore
从Eclipse开始做Android开发的小伙伴都知道,Eclipse默认生成的签名文件是keystore格式,而Android Studio生成的是jks格式。二者只是签名格式的不同,是可以进行转换的(如何转换,查看下一篇文章)。
二、获取签名文件的md5值和sha256值
在文章开始时,就提到了在许多开放平台注册时,需要用到apk签名的md5值和sha256值,怎么获取呢?这里提供了两种方法。
1.用命令行获取md5值和sha256值
keytool -v -list -keystore hyydev.jks
如图4:
2.用代码获取md5值和sha256值
除了用keytool命令获取外,也可以通过代码获取签名的md5值和sha256值。
代码如下:
三、获取系统签名
Android系统的签名信息不是keystore或jks格式,它默认存在build\target\product\security目录下如图。如果需要获取系统签名的信息,需要在Ubuntu环境下把它转换为keystore或jks格式。
1.生成keystore签名文件
1>.取platform.pk8 platform.x509.pem放到一个目录下
2>.生成platform.pem
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.pem -nocrypt
3>.生成platform.p12
4>.生成hyysign.keystore
keytool -importkeystore -deststorepass android -destkeypass hyydev -destkeystore hyysign.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass hyydev -alias dev
2.生成jks签名文件
与生成keystore文件类似。
1>.取platform.pk8 platform.x509.pem放到一个目录下
2>.生成platform.pem文件
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
3>.生成platform.p12
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:wmphp -name hyy
4>.生成wmphp.jks
keytool -importkeystore -deststorepass hyydev -destkeystore wmphpsign.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass hyydev
3.哪些apk的签名必须使用系统签名文件
有些apk需要系统权限,比如实现关机指令。
如何声明系统权限呢?
在AndroidMainfest.xml的mainfest中加入:
android:sharedUserId="android.uid.system"
用到系统权限的apk,起签名必须使用系统签名,否则安装不上,会报错误如图6。
完美源码 » 使用gradle构建配置文件对apk签名