ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Android-ubuntu系统生成系统签名

2021-10-26 10:02:15  阅读:246  来源: 互联网

标签:pem 系统生成 MODULE jks platform ubuntu Android LOCAL android


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有