目录

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

二 该目录下需要准备的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 文件中包含的证书和私钥导入到 JKS(Java 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 即为签名完成的文件

安卓源码下apk进行platform签名的方法相关推荐

  1. 源码下编译APK,却是总是提示,找不到符号:SystemProperties 。。。

    >>>>>在DeskClock下任意一个java文件中,import android.os.SystemProperties;然后添加user库,将layoutlib.j ...

  2. mac下编译安卓源码

    资源 Mac OS10.12 编译Android源码8.1 aosp编译-需翻墙 Mac下编译安卓源码 手把手教你在Mac OS下载.编译及导入Android源码 步骤 准备 磁盘空间大于180G 安 ...

  3. 安卓源码AOSP下载使用的正确姿势

    安卓源码AOSP下载使用的正确姿势 从同步源码到编译完成,整个过程应至少准备200G空间. 编译时需要的内存数与编译线程数相关,博主实测比较极限的配置是4核8G,超过这个范围将触发swap交换导致编译 ...

  4. 【源码篇】安卓源码解析(持续总结)

    前言 在Linux中,一切皆为文件.安卓底层也是基于Linux开发的. 在我们了解源码目录的时候,我们要先知道这些源码的后缀名代表的是什么文件,什么意思,才能更好的去了解其中的原理. 文章目录 前言 ...

  5. android 10.0 在系统源码下生成jks系统签名文件

    在系统开发中,会遇到在app在线升级的时候,会升级失败,由于app自己用自己的签名文件签名的 所以会和系统签名文件不一样,导致会出现一些问题 所以为了解决这一个问题 就得使用系统生成的签名文件 给ap ...

  6. 安卓源码:拦截USB-HID协议内容(模拟键盘输入方式的读卡器)

    前言 接触到的扫描设备分为三类:1)-usb或其它方式转串口,常规的打开读取串口即可:2)-usb模拟键盘输入模式,这种模式底层不是串口:3)原生串口模式,最简单,但这种接口普通手机没有. 本文只介绍 ...

  7. Gitolite + repo 搭建安卓源码开发环境

    Gitolite + repo 搭建安卓源码开发环境 转载请注明出处:http://blog.csdn.net/u011479494/article/details/50629669 相比gitosi ...

  8. 安卓编译安装python_安卓源码编译环境搭建

    本编译环境以 Ubuntu 14.04 系统为例 修改软件源(可选) 安装相关依赖 安装Android编译工具JDK 一. 修改软件源(可选) : sudo gedit /etc/apt/source ...

  9. Android3D抽方块源码,block puzzle jewel 方块拼图消除游戏安卓源码

    [实例简介] block puzzle jewel 方块拼图消除游戏安卓源码,俄罗斯方块变种小游戏,拉拽方块放入,一行或一列消除 [实例截图] [核心代码] f4c3b198-e210-420c-af ...

最新文章

  1. 使用OpenCV 实现matlab的padarray(A, padsize, ‘symmetric’)函数简单实现
  2. backbone.js入门
  3. MYECLIPSE中快速解决项目的错误的方法
  4. android应用框架搭建之BaseActivity
  5. 李航老师《统计学习方法》的代码实现、课件、作业等相关资源的最全汇总
  6. 我终于知道post和get的区别
  7. VIM 正则表达式搜索字符串
  8. sp_executesql介绍和使用 转
  9. PWM实现语音播放原理
  10. 零基础带你学习MySQL—查询数据库(二)
  11. 计算机中那些事儿(九):资料管理一些建议---理论篇
  12. 通过“”斐波那契数列“”学习函数递归
  13. css中margin属性的探究
  14. linux脚本运行出现bc,Linux硬件管理命令---bc
  15. MATLAB 人脸识别矩阵(矩阵、相似度)
  16. Application.DoEvents()
  17. 基于C语言设计的唐诗三百首
  18. IMDB TOP250 更新于2015.3
  19. 克拉克误差网格分析程序(Performs Clarke Error Grid Analysis)
  20. excel公式编辑器_七款编辑器/笔记工具推荐

热门文章

  1. ab753变频器参数怎么拷贝到面板_AB753变频器参数设置
  2. 虚拟网站禁用php,虚拟主机配置,建议禁止php函数列表,禁用不安全的PHP函数
  3. LoRaWAN数据解密实例(附C源码)
  4. python 基础内置函数表及简单介绍
  5. 与汉语拼音不同的中国部分城市英文名
  6. RHEL8 新特征及使用方法
  7. Filter_编码过滤,登录过滤,权限过滤
  8. kendoUI之combobox下拉列表框
  9. Leetcode 929.独特的电子邮件地址(Unique Email Addresses)
  10. 如何使用JavaScript将毫秒转换为日期格式