系统相关
首页 > 系统相关> > Android-ubuntu系统生成系统签名

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出来:

  1. signapk.jar -----------> prebuilts/sdk/tools/lib/signapk.jar 文件位置
    build/make/tools/signapk 源码位置感兴趣的可以阅读.
  2. platform.x509.pem ----------------->build/make/target/product/security
  3. 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工具.

  1. openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
    这将从您的 pk8 文件生成一个文件“platform.priv.pem”。

  2. 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是你自己提供的字符串值,它可以是你想要的任何内容,也需要你记住它。
    输入第二条命令后,系统将提示您输入密码(和密码确认)。 您将自己定义此密码。 这将是您的“密钥密码”,当然,您也需要记住它。

  3. 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