有时候,我们开发的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

让Android Studio支持系统签名(证书)相关推荐

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

    让Android Studio集成系统签名,需要用到一个工具keytool-importkeypair 这个工具的作用是将系统签名的相关信息导入到已有的签名文件里.可从这里下载. 相关文件 platf ...

  2. Android Studio生成签名证书以及证书指纹信息的获取

    因为Android 要求所有 APK 必须先使用证书进行数字签署,然后才能安装.所以使用签名证书给APK签名是应用上架前必不可少的过程. 这里记录下通过Android Studio 生成签名证书以及证 ...

  3. Android之android studio如何获取证书指纹 (SHA1)

    android studio如何获取证书指纹 (SHA1) 为什么要用SHA1 我们做百度地图或是高德地图的时候.注册app信息要求填写数字签名  我们可以通过外部命令行获取,也可以通过eclipse ...

  4. android sha1和签名证书的学习

    今天学习了下百度地图,所以顺便把一些相关的知识 sha1怎样生成  app key是怎样生成的复习总结了下: eclispe : 获取sha1 windows -->preferences--- ...

  5. Android Studio 生成签名的APK

    生成签名 打开项目以后,点击项目,选择 Build 菜单, 然后选择 Generate Signed APK. 如下图所示: 打开生成对话框: 选择 Create new... 按钮, 生成新的Key ...

  6. android自验签名证书,没有以前的互联网连接,无法验证Android自签名证书

    使用SSL基础架构: 我们有一个有效的客户端/服务器设置,其中Android版本4.2和4.4的手机充当客户端,必须通过其自签名SSL证书验证服务器. 问题: 只要设备在尝试连接之前至少有一次互联网访 ...

  7. android studio生成签名导打包的方法

    原文链接:http://blog.csdn.net/l_215851356/article/details/69914213 ---------------------------------如果图片 ...

  8. Android studio打包签名报错:Error:(3) Error: app_name is not translated in am (Amharic);

    在使用Android studio签名打包apk时报错: *Error:(3) Error: "app_name" is not translated in "am&qu ...

  9. android studio 的debug证书在哪里,Android Studio debug.keystore位置介绍

    如果你在网上搜debug.keystore的位置,大部分文章都会告诉你在 C:\Users\XXX\.android 目录下,但我电脑的该目录下确实没有这个文件,放入同事的debug.keystore ...

最新文章

  1. php ftp 分块下载,php ftp下载文件
  2. FindStringExact
  3. 简单记录一下fabric版本1.4的环境搭建,
  4. android 系统倒计时显示时间,Android 依据系统时间整点、半点倒计时
  5. P3803 【模板】多项式乘法(FFT)
  6. 七、操作系统——动态分区分配算法(详解)
  7. 爬虫学习日记 Day1 什么是request,respond,url,headers
  8. 初二的孩子,开学考下滑得很厉害,怎么办?
  9. hutool BigExcelWriter 下的autoSizeColumnAll异常问题
  10. thread和threadLocal之间的关系
  11. java 读fdb文件_如何真正理解java中的NIO?
  12. Kafka从上手到实践-Kafka集群:重要配置和性能探讨 | 凌云时刻
  13. Usage of API documented as @since 1.8+”报错的解决办法
  14. Java--静态代理和动态代理
  15. 纺织品有害物质三项检测
  16. 发现新词 | NLP之无监督方式构建词库(一)
  17. 计算机应用基础离线作业2019,天大2019年4月考试《计算机应用基础》在线考核试题【标准答案】...
  18. 笔记本计算机提升性能,笔记本电脑越来越卡?教你如何有效的提升性能-笔记本电脑卡怎么办...
  19. “我以项上猪头担保,小蹄儿抖三抖,春节祝福就上链了!”
  20. workflow engine Ruote 安装

热门文章

  1. ffmpeg.exe 笔记
  2. github和git@osc提交问题
  3. phpMyAdmin密码设置
  4. oracle 表复制操作
  5. 怎么得到自增列的下一个会插入的id
  6. fastJson toJSONString注意点
  7. 【python】1. 两数之和
  8. Python的虚拟环境配置(pyenv+virtualenv)
  9. mysql时间间隔interval_MySQL DATEDIFF函数获取两个日期的时间间隔的方法
  10. android 监听本机网络请求_fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决...