让Android Studio支持系统签名(证书)

有时候,我们开发的apk需要用到系统权限,需要在AndroidManifest.xml中添加共享系统进程属性:

 

android:sharedUserId="android.uid.system" 
android:sharedUserId="android.uid.shared" 
android:sharedUserId="android.media"

这时候apk的签名就需要是系统签名(platform、shared或media)才能正常使用。
----------------------------------------------------------------------------------------------

常用系统签名方式

1、Android源码环境下签名


这种方式比较麻烦,你需要有编译过的源码环境,并按如下步骤:
1、拷贝App源码到Android源码的packages/apps/目录下,且App源码是普通(Eclipse)格式的
2、配置Android.mk,在其中添加
LOCAL_CERTIFICATE := platform 或 shared 或 media
3、使用mm -B 编译App,生成的apk即系统签名
-----------------------------------------------------------------------------------------------

2、手动重新签名


这种方式比在源码环境下签名简单,App可以在Eclipse或Android Studio下编译,然后给apk重新签名即可。
但这种方式在频繁调试的时候比较痛苦,即使写成脚本,也需要重复一样的操作。

2.1、相关文件
platform.x509.pem、platform.pk8、signapk.jar
文件位置
platform.x509.pem、platform.pk8:
../build/target/product/security
signapk.jar:
../out/host/linux-x86/framework
signapk源码路径:
../build/tools/signapk


2.2、签名命令
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
步骤
1、将相关文件及源apk文件置于同一路径下
2、检查源apk包,去掉META-INF/CERT.SF 和 META-INF/CERT.RSA 文件
3、执行签名命令即可

-----------------------------------------------------------------------------------------------

3、Android Studio系统签名


让Android Studio集成系统签名,需要用到一个工具keytool-importkeypair,详见下文。

keytool-importkeypair – A shell script to import key/certificate pairs into an existing Java keystore



这个工具的作用是将系统签名的相关信息导入到已有的签名文件里。可从这里下载。
工具的使用方法可以通过--help或README.textile来寻求帮助。
相关文件
platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh
我的做法是在App根目录新建Signature文件夹专门存放签名相关文件。
步骤
1、生成demo.jks签名文件

相关文件
platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh
我的做法是在App根目录新建Signature文件夹专门存放签名相关文件。
步骤
生成demo.jks签名文件

在这里选择签名的文件

图片上的密码要和命令的密码对应,别名Alias也要对应起来,还有路径,其他信息是次要的

这个步骤后,可以在对应的位置生成一个demo.jks文件


2、编写签名脚本signature.sh,利用步骤1生成的文件生成新的文件

内容如下:
注意!!一定要把这个文件放到linux环境下编译,在windows下编译目前我还没测试成功,我相信坐签名的同学一定有linux编译环境

#!/bin/sh# 转换平台签名命令
./keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo# demo.jks : 签名文件
# 123456 : 签名文件密码
# platform.pk8、platform.x509.pem : 系统签名文件
# demo : 签名文件别名


$ sudo chmod a+x signature.sh
执行脚本:
$ ./signature.sh

注意!!这时候会生成新的demo.jks,把这个demo.jks替换掉原来的那个才可以。

 

3、配置builde.gradle
在android区域下(与defaultConfig同级)添加配置:
注意 !!Android studio有两个builde.gradle,要在有Android关键字的那个添加,别搞错了。

    signingConfigs {release {storeFile file("../signature/demo.jks")storePassword '123456'keyAlias 'demo'keyPassword '123456'}debug {storeFile file("../signature/demo.jks")storePassword '123456'keyAlias 'demo'keyPassword '123456'}


这样debug或release apk就带有系统签名了。
如果想直接Run app就是release版且带系统签名的apk,还需修改:

修改buildTypes:

buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'signingConfig signingConfigs.release}
}

这样直接Run app就是带系统签名的release版apk了。

如果对你有用,请关注微信公众号【嵌入式Linux

参考:Android Studio自动生成带系统签名的apk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eslint 保存自动格式化_代码规范之理解ESLint、Prettier、EditorConfig

授权转载自:nowThenhttps://juejin.cn/post/6895889063111294990前言团队多人协同开发项目中困恼团队管理一个很大的问题是:无可避免地会出现每个开发者编码习惯不同、代码风格迥异,为了代码高可用、可维护性, 如何从项目管理上尽…

BZOJ 4259: 残缺的字符串 [FFT]

4259: 残缺的字符串 题意&#xff1a;s,t&#xff0c;星号任意字符&#xff0c;匹配方案数 和上题一样 多乘上一个\(a_{ji}\)就行了 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using na…

Deep learning based multi-scale channel compression feature surface defect detection system

基于深度学习的多尺度通道压缩特征表面缺陷检测系统 Deep learning based multi-scale channel compression feature surface defect detection system 简述&#xff1a;首先应用背景分割和模板匹配技术来定义覆盖目标工件的ROI区域。提取的感兴趣区域被均匀地裁剪成若干个图像…

unix dos mac 文件格式不同导致问题

问题&#xff1a; 运行该脚本出现/bin/sh^M: bad interpreter: No such file or directory 解决&#xff1a; 错误中脚本文件的一个非常可能的原因是DOS格的, 即每一行的行尾以\r\n来标识, 其ASCII码各自是0x0D, 0x0A. 能够有非常多种办法看这个文件是DOS格式的还是UNIX格式…

python中的封装调用_Python基础之封装

一、什么是封装 在程序设计中&#xff0c;封装&#xff08;Encapsulation&#xff09;是对具体对象的一种抽象&#xff0c;即将某些部分隐藏起来&#xff0c;在程序外部看不到&#xff0c;其 含义是其他程序无法调用。 要了解封装&#xff0c;离不开“私有化”&#xff0c;就是…

Multi-scale multi-intensity defect detection in ray image of weld bead

Multi-scale multi-intensity defect detection in ray image of weld bead 焊道射线图像中的多尺度多强度缺陷检测 Abstract The radiographic test used to inspect the internal defects is an important non-destructive testing technique for welding.The weld bead ra…

前端MVC框架之 Angular

一、什么是Angular jQuery&#xff0c;它属于一种类库(一系列函数的集合)&#xff0c;以DOM为驱动核心&#xff1b;而Angular是一种 MVC 的前端框架&#xff0c;则是前端框架&#xff0c;以数据和逻辑为驱动核心&#xff0c;它有着诸多特性&#xff0c;最重要的是&#xff1a;模…

C语言关键字(三)

之前的两篇文章 嵌入式Linux&#xff1a;c语言深度解剖&#xff08;数据类型关键字&#xff09;​zhuanlan.zhihu.com 嵌入式Linux&#xff1a;c语言深度解剖&#xff08;入门篇&#xff09;​zhuanlan.zhihu.com 这篇文件继续讲解C语言关键字 想问大家一个问题&#xff0c…

Review on the Recent Welding Research with Application of CNN-Based Deep Learning

Abstract CNNs enables end-to-end learning with- out feature extraction and in-situ estimation of the process outputs. cnn使端到端学习没有特征提取和现场估计的过程输出。 The papers was classified into 5 groups: four for supervised learning models and one …

python bottle框架 运维_python bottle 框架实战教程:任务管理系统 V_1.0版 | linux系统运维...

经过1-2个星期的开发&#xff0c;现在用任务管理功能&#xff08;添加、删除、修改&#xff0c;详细&#xff09;、项目管理功能&#xff08;添加、删除&#xff0c;修改&#xff0c;详细&#xff09;等&#xff0c;我把现在完成的版本&#xff0c;叫做1.0吧。发布完这个版本后…

[转]你每天90%的注意力被浪费了

[转]你每天90%的注意力被浪费了 最近有一句话很流行&#xff0c;叫做“就怕聪明的人比你还努力&#xff01;”大名鼎鼎的日本寿司之神&#xff0c;小野二郎&#xff0c;有一次记者问他成功的秘诀是什么&#xff0c;小野的答案就两个字“专注”&#xff0c;说自己是把整个生命&a…

Android.mk中添加宏定义

在Boardconfig.mk 中添加一个 IMAGE_FOR_FACTORY_TEST: true 由于Boardconfig.mk和各目录的Android.mk是相互关联的 所以我们可以在Android.mk 中添加 一个 ifdef IMAGE_FOR_FACTORY_TEST LOCAL_CFLAGS -DFACTORY_TEST endif 在Android.mk中添加的这行相当于在 该目录…

Android客制化-恢复出厂设置但保留文件

很久没有记录了&#xff0c;持之以恒做一件事&#xff0c;需要一定的毅力呐&#xff01; 最近遇到了一个需求&#xff0c;要求恢复出厂设置保留内置sd卡下某个目录的文件。思来想去&#xff0c;从驱动那边备份校准信号文件得到了一些思路。因为带通话设置的装置需要进行校准&a…

form 窗体增加边框_C#控件美化之路(13):美化Form窗口(上)

在开发中最重要的就是美化form窗口&#xff0c;在开发中&#xff0c;大多都是用会用自主美化的窗口开发程序。本文只是点多&#xff0c;分为上中下节。分段讲解。本文主要讲解窗口美化关键步骤。首先美化窗体&#xff0c;就需要自己绘制最大化 最小化 关闭按钮。其次就是界面样…

第四周数据结构

转载于:https://www.cnblogs.com/bgd150809329/p/6650255.html

gdb x命令_gdb基本命令

参考自&#xff1a;gdb基本命令(非常详细)_JIWilliams-CSDN博客_gdb命令​blog.csdn.net本文介绍使用gdb调试程序的常用命令。 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、BCB的图形化调试…

cmds在线重定义增加列

--输出信息采用缩排或换行格式化EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, PRETTY, TRUE);--确保每个语句都带分号EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, SQLTERMINATOR, TRUE);--关闭表索引、外键等关联&…

YOLOX-PAI: An Improved YOLOX, Stronger and Faster than YOLOv6

YOLOX-PAI&#xff1a;一种改进的YOLOX&#xff0c;比YOLOv6更强更快 原文&#xff1a;https://arxiv.org/pdf/2208.13040.pdf 代码&#xff1a;https://github.com/alibaba/EasyCV 0.Abstract We develop an all-in-one computer vision toolbox named EasyCV to facilita…

Linux Shell 重定向到文件以当前时间命名

我们经常在编译的时候&#xff0c;需要把编译的过程日志保留下来&#xff0c;这时候这个命令就非常重要了。 make |tee xxx_$(date %y%m%d%H%M%S).txt

安装一直初始化_3D max 软件安装问题大全

纵使3D虐我千百遍&#xff0c;我待3D如初恋&#xff01;大家好&#xff0c;我是小文。快节奏生活的今天&#xff0c;好不容易有点学习的热情&#xff0c;打开电脑学习下&#xff0c;没想到被简单的软件安装问题浇灭&#xff01;这不是耽误了一位伟大的世界设计师诞生的节奏吗&a…