首页 > 其他分享 >Android中使用系统的签名打包

Android中使用系统的签名打包

时间:2024-04-19 11:13:49浏览次数:21  
标签:pem 系统 platform 签名 APK Android 打包

背景

正常开发一个Android软件项目,我们会生成一个签名文件,具体实现方式详见:项目签名

当我们开发一个系统级的app时,若apk已经集成到系统中,再想重新安装新包测试时一般会安装不上,提示签名不一致,原因是系统在整体编译时需要整体的来进行系统签名,当我们把新的apk往系统安装时,就会提示签名不一致,因为当前编译好的apk是应用签名,终端上的app是系统签名,二者不匹配,所以不能覆盖安装。

所以需要将编译好的apk进行系统签名才可以安装,以下总结下系统签名的方法。

 

前提准备

找到Android标准签名key文件,位于源码/build/target/product/security目录下,四组默认签名供Android.mk在编译APK使用。主要有4个key:

  • testkey:普通签名APK,默认情况下使用。
  • platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。
  • shared:该APK需要和home/contacts进程共享数据。
  • media:该APK是media/download系统中的一环。
.pk8代表私钥,.x509.pem公钥,它们都是成对出现;

 

testkey是作为android编译的时候默认的签名key,如果系统中的apk的Android.mk中没有设置LOCAL_CERTIFICATE的值,就默认使用testkey。 而如果设置成:LOCAL_CERTIFICATE := platform,就代表使用platform来签名,这样的话这个apk就拥有了和system相同的签名,因为系统级别的签名也是使用的platform来签名,此时使用android:sharedUserId="android.uid.system"才有用!    

生成系统的keystore文件

//如果之前没有生成platform.pem文件,现在可以执行以下命令生成
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
//如果之前没有生成platform.pem文件,现在可以执行以下命令生成
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

//生成platform.p12文件,设置对应的密码和alias名(app签名使用到)
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:密码 -name 名称

//生成platform.jks(app使用的签名文件),启动
keytool -importkeystore -deststorepass 密码 -destkeystore ./platform.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 密码

剩下的就是将platform.jks拷贝到app工程目录下并配置build.gradle,打包时使用platform.jks打包即可

signingConfigs {
        release {
            storeFile file('../platfrom.keystore')
            storePassword '密码'
            keyAlias '别名'
            keyPassword '密码'
        }
    }

 

 

参考:AOSP系统签名的生成以及替换

 

 

标签:pem,系统,platform,签名,APK,Android,打包
From: https://www.cnblogs.com/liyan-blogs/p/18145364

相关文章

  • 如何将 Python 项目打包成 exe,另带卸载功能!
    Python项目打包成exe前言虽然我是做web的,但是对Python的众多开源项目一直都很关注。像以前的stablediffusion的AI绘画,和so-vits-svc音色替换等源码的部署文档都很完善了。尽管如此,但对于刚入门的和本地环境搭建各种踩坑的同学,急于一试就显得不太友好了。针对这一现......
  • webpack打包优化方案
    以下是一些常见的webpack打包优化方案:1.使用生产模式(productionmode)://webpack.config.jsmodule.exports={mode:'production',//...其他配置};2.代码分割(CodeSplitting)://webpack.config.jsmodule.exports={//...optimization:{splitChunks......
  • 2024-04-18 使用webpack减少打包文件数量
    减少Webpack打包文件的数量通常涉及多个策略和配置选项。下面是一些具体的方法和示例代码,帮助你实现这一目标:1.代码分割(CodeSplitting)使用动态导入(import())语法将代码分割成多个块,这样Webpack会为每个块生成一个单独的文件。//假设我们有一个大型的组件库//而不是......
  • keycloak~jwt的rs256签名的验证方式
    接口地址keycloak开放接口地址:/auth/realms/fabao/.well-known/openid-configurationrsa算法相关术语RSA算法是一种非对称加密算法,其安全性基于大整数分解的困难性。在RSA算法中,有以下几个关键参数:n(模数):n是一个大整数,通常为两个大素数p和q的乘积,即n=p*q。n用......
  • Unity Android 打包报错解决方案记录
    1.安卓版本过低报错提示PickedupJAVA_TOOL_OPTIONS:-Dfile.encoding=UTF-8D:\Develop\Unity\HRVTest\Library\Bee\Android\Prj\Mono2x\Gradle\unityLibrary\src\main\java\com\unity\androidnotifications\UnityNotificationManager.java:164:错误:找不到符号......
  • JavaFx项目打包成exe,并集成Jre,使Java项目在任意机器运行
    1.关键点:通过springboot打包插件,将项目依赖都打到一个jar包内。以下是pom配置文件:<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artif......
  • Android Studio修改代码后直接点击run没生效,需要Rebuild或者删除build文件夹后再run才
    AndroidStudio修改代码后直接点击run没生效,需要Rebuild或者删除build文件夹后再run才生效的解决方法第一步:app->editconfigurations进入app配置选中app,滑动到下面的beforelaunch,点击+号,添加一个Gradle-awareMake给Task输入一个名称,或者不填留空使用原理名称,然......
  • 在宝塔上配置打包好的vue3项目
    配置文件如下server{listen80;server_namegongchang.365cb.cn; indexindex.htmlindex.htmdefault.phpdefault.htmdefault.html;root/www/wwwroot/dist;#SSL-STARTSSL相关配置,请勿删除或修改下一行带注释的404规则#error_page404/404.html;#SS......
  • 使用rollup打包一个npm包
    使用rollup打包一个npm包前言:在这个都在使用npminstall,来安装包的时代,你是否想发布一个自己的npm包,或者你工作中是否要发布一个npm包,来到你的项目中到处使用呢?(不晓得npm是什么的请移步:npm)那么今天我们就来学习一下怎样打包一个自己的npm包1.首先准备环境node本地环境,vscod......
  • 地铁查询系统Android,MainActivity
    packagecom.example.metro_info_front_end;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.AutoCompleteTextView;importandroid.widget.Button;importandroid.widget.LinearLayout;importandroid......