让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前言团队多人协同开发项目中困恼团队管理一个很大的问题是:无可避免地会出现每个开发者编码习惯不同、代码风格迥异,为了代码高可用、可维护性, 如何从项目管理上尽…

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

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

前端MVC框架之 Angular

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

C语言关键字(三)

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

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

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

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

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

第四周数据结构

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

gdb x命令_gdb基本命令

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

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

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

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

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

TCP/IP 协议栈 -- 编写UDP客户端注意细节

上节我们说到了TCP 客户端编写的主要细节&#xff0c; 本节我们来看一下UDP client的几种情况&#xff0c;测试代码如下&#xff1a; server&#xff1a; #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h>…

RuntimeError: Address already in use

问题描述&#xff1a;Pytorch用多张GPU训练时&#xff0c;会报地址已被占用的错误。其实是端口号冲突了。 因此解决方法要么kill原来的进程&#xff0c;要么修改端口号。 在代码里重新配置 torch.distributed.init_process_group()dist_init_method tcp://{master_ip}:{mast…

Windows环境下的安装gcc

Windows具有良好的界面和丰富的工具&#xff0c;所以目前linux开发的流程是&#xff0c;windows下完成编码工作&#xff0c;linux上实现编译工作。 为了提高工作效率&#xff0c;有必要在windows环境下搭建一套gcc,gdb,make环境。 MinGW就是windows下gcc的版本。 下载地址ht…

RuntimeError: NCCL error in:XXX,unhandled system error, NCCL version 2.7.8

项目场景&#xff1a; 分布式训练中遇到这个问题&#xff0c; 问题描述 大概是没有启动并行运算&#xff1f;&#xff1f;&#xff1f;&#xff08; 解决方案&#xff1a; &#xff08;1&#xff09;首先看一下服务器GPU相关信息 进入pytorch终端&#xff08;Terminal&#x…

一张倾斜图片进行矫正 c++_专业性文章:10分钟矫正骨盆前倾

如今&#xff0c;骨盆前倾(又称“下交叉综合征”)非常多&#xff0c;大部分是由于以下两个原因而变得越来越突出&#xff1a;经常久坐不良的运动习惯后面我们讲到纠正骨盆前倾的四个基本步骤&#xff0c;让你快速解决&#xff0c;提高生活质量知识型和系统型的内容&#xff0c;…

TypeError: can‘t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory

项目场景&#xff1a; 运行程序&#xff0c;出现报错信息 TypeError: cant convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.。 Traceback (most recent call last):File "tools/demo.py", line 97, in <module>vi…

Secure CRT 自动记录日志

配置自动log操作如下&#xff1a; 1.options ---> Global Options 2、General->Default Session->Edit Default Settings 3、Terminal->Log File 设置如图上所示 点击 日志 &#xff0c;在选项框中 Log file name中填入路径和命名参数&#xff1a; E:\Log\%Y_%M_…

java 异步调用方法_乐字节Java编程之方法、调用、重载、递归

一、概述方法是指人们在实践过程中为达到一定目的和效果所采取的办法、手段和解决方案。所谓方法&#xff0c;就是解决一类问题的代码的有序组合&#xff0c;是一个功能模块。编程语言中的方法是组合在一起来执行操作语句的集合。例如&#xff0c;System.out.println 方法&…

git clone 从GitHub上下载项目到服务器上运行+创建虚拟环境

1. 基础的Linux命令 可先进入需要放置文件的路径之下 pwd # 可看当前路径 cd …/ #返回上一层目录 cd ./xx/ #进入当前路径下的下一个文件2. GitHub项目clone到服务器上运行 # 复制GitHub页面的链接&#xff0c;在服务器后台输入git clone 命令即可 git clone https://githu…

java 调用python_Java平台如何调用Python平台?

1. 问题描述Java平台要调用Pyhon平台已有的算法&#xff0c;为了减少耦合度&#xff0c;采用Pyhon平台提供Restful 接口&#xff0c;Java平台负责来调用&#xff0c;采用HttpJson格式交互。2. 解决方案2.1 JAVA平台侧2.1.1 项目代码public static String invokeAlgorithm(Strin…