Android系统签名生成[通俗易懂]

Android系统签名生成[通俗易懂]Android系统应用添加系统签名在开发的过程中,如果需要设置当前的应用为系统应用,需要两步:在对应的AndroidManifest.xml文件中将“android:sharedUserId”设置为”android.uid.system”。如下所示:<?xmlversion=”1.0″encoding=”utf-8″?><manifestxmlns:android=”http://schemas.android.com/apk/res/android”pack

大家好,又见面了,我是你们的朋友全栈君。

Android系统应用添加系统签名

在开发的过程中,如果需要设置当前的应用为系统应用,需要两步:

  1. 在 对应的AndroidManifest.xml文件中将“android:sharedUserId”设置为”android.uid.system”。如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.localmediaplayerdemo"
    android:sharedUserId="android.uid.system">
  1. 使用签名文件对应用进行签名
    该类App在安装到系统的时候,需要有系统签名,否则无法安装,提示下面的错误:
04/24 18:02:52: Launching 'mobile' on ×××Android Device.
Installation did not succeed.
The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

List of apks:
[0] '/**/**/APK name /mobile/build/outputs/apk/debug/mobile-debug.apk'
Installation failed due to: 'Failed to commit install session 1758990893 with command cmd package install-commit 1758990893. Error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Reconciliation failed...: Reconcile failed: Package com.example.apkname has no signatures that match those in shared user android.uid.system; ignoring!'
Retry

Android系统签名的生成

生成系统签名,首先需要下面的两个系统签名文件:
platform.pk8
platform.x509.pem
这两个文件可以从Android源码中获取,具体路径为:
build/target/product/security/
将上面的两个文件放到同一个文件夹,同时也将自己生成的签名文件放置在这个文件夹下,从gitHub上下载工具keytool-importkeypair
执行下面的命令就可以生成系统签名文件了。

./keytool-importkeypair -k SignDemo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias platform

其中:
SignDemo.jks是签名文件
123456是storePassword和keyPassword的密码
platform是别名

    signingConfigs { 
   
        platform { 
   
            storeFile file("SignDemo.jks")
            storePassword '123456'
            keyAlias 'platform'
            keyPassword '123456'
        }
    }

上面命令的意思也就是将签名文件转换成系统签名文件。

有时候会出现下面的错误:

Error decrypting key
139637230543296:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
139637230543296:error:0D06C03A:asn1 encoding routines:asn1_d2i_ex_primitive:nested asn1 error:../crypto/asn1/tasn_dec.c:713:
139637230543296:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:646:Field=version, Type=PKCS8_PRIV_KEY_INFO
unable to load private key
140642992083392:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
Importing "platform" with SHA1 Fingerprint=57:3D:8B:63:41:84:95:29:43:CB:AD:67:7D:93:2D:03:83:D3:08:CE
正在将密钥库 /tmp/keytool-importkeypair.LHJB/p12 导入到 ./debug.keystore...
keytool 错误: java.io.FileNotFoundException: /tmp/keytool-importkeypair.LHJB/p12 (没有那个文件或目录)

是因为platform.pk8文件或者platform.x509.pem文件有问题,从源码当中copy一份就可以了。

参考文档:
https://blog.csdn.net/qq_34744658/article/details/107949895
https://www.freesion.com/article/242659750/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151961.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java二维数组试题_Java二维数组及习题总结

    java二维数组试题_Java二维数组及习题总结二维数组二维数组:就是一个由行和列组成的一个矩阵(Matrix);在这个矩阵中访问元素时,是根据元素的行角标和列角标所确定的。二维数组在内存中的存储:无论是二维数组,还是多维数组,它们本身就是一个一维数组,只不过该一维数组中的每一个元素是另一个一维数组。二维数组的创建:int[][]matrix=newint[3][4]———创建一个3行4列的二维数组,元素默认都是0;int[]…

    2022年5月29日
    38
  • 为什么有些网站域名不以www开头?什么是二级域名?

    为什么有些网站域名不以www开头?什么是二级域名?本文公众号来源:漫话编程作者:漫话编程我在初学的时候不清楚啥叫顶级域名,啥是二级域名以及为啥我们输入网站地址的时候可以省略www!这篇文章通俗易懂地告诉你!38女神…

    2022年5月12日
    57
  • 三阶魔方第七步公式_四阶魔方公式图解七步

    三阶魔方第七步公式_四阶魔方公式图解七步关于魔方,你需要知道:无论怎么转,每一个面的最中间的块[图:1-面中心块]是固定不动的。所以每一面的中心块颜色决定了该面的颜色。无论怎么转,位于顶角的有三种颜色的块[图:2-顶角块]永远会在某一个顶角;位于棱中间的有两种颜色的块[图:2-棱中间块]永远会在某一个棱的中间。所谓的公式,就是用一定的套路告诉你每个面该怎么转。所用到的字母UDLRFB分别代表魔方的上下左右前后…

    2025年6月8日
    0
  • 基于SCADA数据驱动的风电机组部件故障预警

    基于SCADA数据驱动的风电机组部件故障预警

    2021年11月22日
    51
  • 矩阵求逆c++实现[通俗易懂]

    矩阵求逆c++实现[通俗易懂]矩阵求逆c++实现

    2022年8月21日
    5
  • JDK的下载、安装和环境配置教程(2021年,win10)

    JDK的下载、安装和配置JDK的下载输入下载地址:https://www.oracle.com/downloads/往下拉,看到DeveloperDownloads,点击java点击Java(JDK)forDevelopers选择你想要下载的jdk版本点击JDKDownloads,往下拉,(有可能会提示先登录账号,才能下载。没账号的可以注册一个)我的系统是Windows的64位,个人偏爱压缩版,所以选择了jdk-14.0.1_windows-

    2022年4月7日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号