Android-ubuntu系统生成系统签名
作者:互联网
Android系统开发中,我们需要给有system uid的app配置签名,使用bp或者mk文件来签名也没有问题,就是太麻烦了,干脆把jks导入到Androidstudio里面一劳永逸.
mk的方式
//使用系统签名
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := alarmvoice/app-debug.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := AlarmvoiceService
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := .apk
LOCAL_VENDOR_MODULE := true
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
//不要使用系统签名
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := wifistateservice/WifiStateService.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := WifiStateService
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_SUFFIX := .apk
LOCAL_VENDOR_MODULE := true
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
工具
签名的工具有三个,需要从你的源码环境里面copy出来:
- signapk.jar -----------> prebuilts/sdk/tools/lib/signapk.jar 文件位置
build/make/tools/signapk 源码位置感兴趣的可以阅读. - platform.x509.pem ----------------->build/make/target/product/security
- platform.pk8 ----------------->build/make/target/product/security
命令
我使用的是ubuntu 18.4系统,所以签名命令:
java -Xmx2048m -Djava.library.path=“lib64” -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk
生成jks文件
看看Androidstudio怎么配置的
android {
...
defaultConfig { ... }
signingConfigs {
debug {
// You need to specify either an absolute path or include the
// keystore file in the same directory as the build.gradle file.
storeFile file("platform.jks")
storePassword "android"
keyAlias "android"
keyPassword "android"
}
release {
// You need to specify either an absolute path or include the
// keystore file in the same directory as the build.gradle file.
storeFile file("platform.jks")
storePassword "android"
keyAlias "android"
keyPassword "android"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
...
}
}
}
生成jks命令
首先确保安装了openssl keytool工具.
-
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
这将从您的 pk8 文件生成一个文件“platform.priv.pem”。 -
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name android
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name {{KEY_ALIAS}}
这将使用上一步生成的“platform.x509.pem”文件和之前生成的“platform.priv.pem”文件一起生成“platform.pk12”文件。 KEY_ALIAS是你自己提供的字符串值,它可以是你想要的任何内容,也需要你记住它。
输入第二条命令后,系统将提示您输入密码(和密码确认)。 您将自己定义此密码。 这将是您的“密钥密码”,当然,您也需要记住它。 -
keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android -alias android
keytool -importkeystore -destkeystore {{STORE_FILE_NAME}}.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass {{KEY_PASSWORD}} -alias {{KEY_ALIAS}}
命令3最后的命令实际上会做两件事之一:
如果指定的 jks 文件已经存在,它将导入(如果存在则覆盖)具有给定别名的密钥.如果该文件尚不存在,它将创建一个全新的 jks 文件,并使用给定的别名导入您的密钥.无论如何,该命令接受先前定义的密钥密码和密钥别名。输入命令后,系统将提示您输入商店密码。 如果它是一个已经存在的 JKS 文件,您将必须提供已经存在的 JKS 存储密码。否则,就是你定义一个新的 JKS 新密码。 记住你赋予它的价值。
导入Androidstudio中
所以我们一共需要记住4个值:
key alias
key password
store password
store file name
//签名需要的内容
==================================================================================
signingConfigs {
release {
storeFile file("{{STORE_FILE_PATH*}}/{{STORE_FILE_NAME}}.jks")
storePassword "{{STORE_PASSWORD}}"
keyAlias "{{KEY_ALIAS}}"
keyPassword "{{KEY_PASSWORD}}"
}
}
===================================================================================
ok,完成了.
标签:pem,系统生成,MODULE,jks,platform,ubuntu,Android,LOCAL,android 来源: https://blog.csdn.net/sinat_33585352/article/details/120953379