安卓源码下apk进行platform签名的方法

目录

一 任意目录下创建一个文件夹

 二 该目录下需要准备的5个文件

 三 执行命令

四 生成结果


一 任意目录下创建一个文件夹

 二 该目录下需要准备的5个文件

上述五个文件,

前四个可以从编译好的安卓源码工程目录下复制,

第五个是自己需要签名的apk文件

  •  ①platform.pk8

路径:DCU_CODE/buildsystem/android10/build/target/product/security/platform.pk8

文件名 platform.pk8 通常是 Android 系统中的一个签名密钥文件。在 Android 平台上,应用程序必须使用数字证书进行签名,以便系统可以验证其身份并确保它们没有被篡改。

platform.pk8 是用于签署 Android 平台核心组件的密钥文件,例如系统服务和框架应用程序。这些组件通常由设备制造商或 Android 平台开发团队签名。该文件只能由具有特定权限的人员访问和使用。

  • ② platform.x509.pem

路径:DCU_CODE/buildsystem/android10/build/target/product/security/platform.x509.pem

platform.x509.pem 文件通常是 Android 系统中用于验证应用程序身份的证书文件。在 Android 平台上,应用程序必须使用数字证书进行签名,以便系统可以验证其身份并确保它们没有被篡改。

platform.x509.pem 文件包含了一个或多个数字证书,这些证书用于验证应用程序的身份。这些证书由设备制造商或 Android 平台开发团队签名,并与 platform.pk8 中的私钥配对使用。

当用户安装一个应用程序时,Android 系统会检查该应用程序是否使用有效的证书进行签名,并且该证书是否与设备上的已知证书匹配。如果证书无效或不匹配,则系统将阻止应用程序安装或运行。

  • ③libconscrypt_openjdk_jni.so

路径:DCU_CODE/buildsystem/android10/out/host/linux-x86/lib64/ libconscrypt_openjdk_jni.so

libconscrypt_openjdk_jni.so 是一个用于加密和安全通信的库文件。具体来说,它是 Google Conscrypt 库的 JNI 绑定,允许 Java 应用程序使用 OpenSSL 的加密算法进行加密和解密操作。

Java 运行时环境默认使用自己的加密实现,但在某些情况下,如与其他平台(如 OpenSSL)通信或执行特定加密任务时,使用 OpenSSL 实现可能更好。此时,可以使用 libconscrypt_openjdk_jni.so 作为替代方案。

总的来说,libconscrypt_openjdk_jni.so 可以提供更高级别的加密和安全性,同时提供跨平台兼容性。

  • ④sign.apk.jar  
    路径:DCU_CODE/buildsystem/android10/out/host/linux-x86/framework/sign.apk.jar

签名(signing)是 Android 应用程序开发过程中的一个重要步骤。应用程序必须被签名,以验证其来源并保证应用程序没有被篡改。 APK Android Package)文件是 Android 应用程序的安装包格式,它包含了应用程序的所有组件和资源文件。在将 APK 文件部署到设备上之前,需要使用 keytool 工具生成数字证书,然后使用 jarsigner 工具对 APK 进行签名。

Android 开发中,sign.apk.jar 是一个用于签名 APK 文件的工具,它可以通过命令行或脚本调用。该工具能够将特定的数字证书信息与 APK 文件进行关联,从而确保用户下载并安装的应用程序来自可信来源,并且没有被篡改

  • ⑤待签名的apk文件

 三 执行命令

  • openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

这是一个使用 OpenSSL 工具将 PKCS #8 格式的密钥转换为 PEM 格式的命令。其中:

  • openssl 是 OpenSSL 工具的命令行程序。
  • pkcs8 表示要转换的密钥格式是 PKCS #8。
  • -inform DER 表示输入文件的格式为 DER 编码。
  • -nocrypt 表示输出的 PEM 文件不需要加密。
  • -in platform.pk8 表示输入文件名为 platform.pk8,即要转换的 PKCS #8 格式的密钥文件。
  • -out platform.pem 表示输出文件名为 platform.pem,即转换后的 PEM 格式的密钥文件。

②openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:123456 -name "alias_name"

这是一个使用 OpenSSL 工具将 X.509 证书和私钥打包成 PKCS #12 文件的命令。其中:

  • openssl 是 OpenSSL 工具的命令行程序。
  • pkcs12 表示要执行 PKCS #12 相关的操作。
  • -export 表示要进行导出(打包)操作。
  • -in platform.x509.pem 表示输入文件名为 platform.x509.pem,即要打包的 X.509 证书文件。
  • -out platform.p12 表示输出文件名为 platform.p12,即打包后的 PKCS #12 文件。
  • -inkey platform.pem 表示要使用的私钥文件为 platform.pem。
  • -password pass:123456 表示设置 PKCS #12 文件密码为 123456。
  • -name "alias_name" 表示在 PKCS #12 文件中标识此证书的别名为 alias_name。

执行该命令时,会提示您输入 PKCS #12 密码两次以确认。

③keytool -importkeystore -deststorepass 123456 -destkeystore platform.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass 123456

这是一个使用 keytool 工具将 PKCS #12 文件中包含的证书和私钥导入到 JKSJava KeyStore)文件中的命令,其中:

  • keytool 是 Java 提供的管理密钥和证书的工具。
  • -importkeystore 表示要执行导入操作。
  • -deststorepass 123456 表示设置目标 JKS 文件的密码为 123456。
  • -destkeystore platform.jks 表示指定目标 JKS 文件的名称为 platform.jks。
  • -srckeystore platform.p12 表示指定源 PKCS #12 文件的名称为 platform.p12。
  • -srcstoretype PKCS12 表示指定源 PKCS #12 文件的类型为 PKCS #12。
  • -srcstorepass 123456 表示指定源 PKCS #12 文件的密码为 123456。

执行该命令时,会提示您输入源 PKCS #12 文件的密码和确认是否信任证书等信息。成功导入后,在 platform.jks 文件中就可以访问 PKCS #12 文件中包含的证书和私钥了。

④java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 app-NeedSign.apk app-SignFinish.apk

这是一个使用 Java 程序运行一个名为 signapk.jar JAR 文件进行 APK 签名的命令,其中:

  • java 表示启动 Java 运行环境。
  • -Djava.library.path=. 表示将当前目录作为本地库文件的加载路径。
  • -jar signapk.jar 表示要执行的 JAR 文件为 signapk.jar。
  • platform.x509.pem 和 platform.pk8 分别是包含签名证书和私钥的文件,用于对 APK 进行签名。
  • app-NeedSign.apk 是待签名的 APK 文件名。
  • app-SignFinish.apk 是签名后生成的新 APK 文件名。

执行该命令时,会通过 signapk.jar 程序读取 platform.x509.pem platform.pk8 文件中的证书和私钥,对 app-debug.apk 文件进行签名,并将签名后的结果保存到 app-debug_sign.apk 文件中。完成签名后,您可以将 app-debug_sign.apk 安装到设备上或发布给用户。

命令效果如下:

四 生成结果

生成的 app-SignFinish.apk 即为签名完成的文件

猜你喜欢

转载自blog.csdn.net/qq_34597963/article/details/130686143