Android签名
Android签名目的:
- 纯软件公司relsase自己的apk产品前,会使用自己的公钥向CA申请数字证书,之后使用该数字证书迭代自己的产品。以保证软件产品的安全性。
- 平台厂商预装apk一般需要使用签名工具和系统签名文件(在
$(android_src)/build/target/product/security/
目录下),对预装apk进行签名,一方面保证之后这部分软件升级中证书的一致性;另一方面有些应用需要获取系统权限,签名应与系统一致。
https://blog.csdn.net/u012041204/article/details/73823606
Android系统默认的四种签名类型
- testkey:普通APK,默认情况下使用。
- platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。
- shared:该APK需要和home/contacts进程共享数据。
- media:该APK是media/download系统中的一环。
应用程序的Android.mk中有一个LOCAL_CERTIFICATE字段,由它指定用哪个key签名,未指定的默认用testkey.
系统默认的四种签名类型文件的位置:
$(android_src)/build/target/product/security$ ls
media.pk8 platform.pk8 README shared.pk8 testkey.pk8
media.x509.pem platform.x509.pem shared.x509.pem testkey.x509.pem
pk8是生成的私钥,而*.x509.pem是公钥,生成时两者是成对出现的
Android系统制作自定义签名:
需要生成四种类型的key文件
cd /Android_src/development/tools
使用make_key工具生成签名文件
sh make_key (platform|shared|media|testkey|releasekey) '/C=CN/ST=HuNan/L=ChangSha/O=Company/OU=Department/CN=Zdd/emailAddress=xxxx@qq.com'
C —> Country Name (2 letter code)
ST —> State or Province Name (full name)
L —> Locality Name (eg, city)
O —> Organization Name (eg, company)
OU —> Organizational Unit Name (eg, section)
CN —> Common Name (eg, your name or your server’s hostname)
emailAddress —> Contact email address修改android平台签名:
修改build/core/config.mk
修改external/sepolicy/keys.conf
Android签名方式
- 方式一: 使用命令行工具
SignApk.jar
签名(out/host/linux-x86/framework/signapk.jar
)$java -jar SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk
- 方式二: 用 platform.pk8 和 platform.x509.pem (源码
\device\xxx\xxx\security
)生成 keystore 系统签名文件。然后在build.gradle文件中配置signingConfigs
使用工具keytool-importkeypair
:
Android Studio使用platform.keystore$keytool-importkeypair -k ~/.android/platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DD'Notes!
评论