让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
让Android Studio支持系统签名(证书)相关推荐
- Android Studio支持系统签名(证书)
让Android Studio集成系统签名,需要用到一个工具keytool-importkeypair 这个工具的作用是将系统签名的相关信息导入到已有的签名文件里.可从这里下载. 相关文件 platf ...
- Android Studio生成签名证书以及证书指纹信息的获取
因为Android 要求所有 APK 必须先使用证书进行数字签署,然后才能安装.所以使用签名证书给APK签名是应用上架前必不可少的过程. 这里记录下通过Android Studio 生成签名证书以及证 ...
- Android之android studio如何获取证书指纹 (SHA1)
android studio如何获取证书指纹 (SHA1) 为什么要用SHA1 我们做百度地图或是高德地图的时候.注册app信息要求填写数字签名 我们可以通过外部命令行获取,也可以通过eclipse ...
- android sha1和签名证书的学习
今天学习了下百度地图,所以顺便把一些相关的知识 sha1怎样生成 app key是怎样生成的复习总结了下: eclispe : 获取sha1 windows -->preferences--- ...
- Android Studio 生成签名的APK
生成签名 打开项目以后,点击项目,选择 Build 菜单, 然后选择 Generate Signed APK. 如下图所示: 打开生成对话框: 选择 Create new... 按钮, 生成新的Key ...
- android自验签名证书,没有以前的互联网连接,无法验证Android自签名证书
使用SSL基础架构: 我们有一个有效的客户端/服务器设置,其中Android版本4.2和4.4的手机充当客户端,必须通过其自签名SSL证书验证服务器. 问题: 只要设备在尝试连接之前至少有一次互联网访 ...
- android studio生成签名导打包的方法
原文链接:http://blog.csdn.net/l_215851356/article/details/69914213 ---------------------------------如果图片 ...
- 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 ...
- android studio 的debug证书在哪里,Android Studio debug.keystore位置介绍
如果你在网上搜debug.keystore的位置,大部分文章都会告诉你在 C:\Users\XXX\.android 目录下,但我电脑的该目录下确实没有这个文件,放入同事的debug.keystore ...
最新文章
- php ftp 分块下载,php ftp下载文件
- FindStringExact
- 简单记录一下fabric版本1.4的环境搭建,
- android 系统倒计时显示时间,Android 依据系统时间整点、半点倒计时
- P3803 【模板】多项式乘法(FFT)
- 七、操作系统——动态分区分配算法(详解)
- 爬虫学习日记 Day1 什么是request,respond,url,headers
- 初二的孩子,开学考下滑得很厉害,怎么办?
- hutool BigExcelWriter 下的autoSizeColumnAll异常问题
- thread和threadLocal之间的关系
- java 读fdb文件_如何真正理解java中的NIO?
- Kafka从上手到实践-Kafka集群:重要配置和性能探讨 | 凌云时刻
- Usage of API documented as @since 1.8+”报错的解决办法
- Java--静态代理和动态代理
- 纺织品有害物质三项检测
- 发现新词 | NLP之无监督方式构建词库(一)
- 计算机应用基础离线作业2019,天大2019年4月考试《计算机应用基础》在线考核试题【标准答案】...
- 笔记本计算机提升性能,笔记本电脑越来越卡?教你如何有效的提升性能-笔记本电脑卡怎么办...
- “我以项上猪头担保,小蹄儿抖三抖,春节祝福就上链了!”
- workflow engine Ruote 安装
热门文章
- ffmpeg.exe 笔记
- github和git@osc提交问题
- phpMyAdmin密码设置
- oracle 表复制操作
- 怎么得到自增列的下一个会插入的id
- fastJson toJSONString注意点
- 【python】1. 两数之和
- Python的虚拟环境配置(pyenv+virtualenv)
- mysql时间间隔interval_MySQL DATEDIFF函数获取两个日期的时间间隔的方法
- android 监听本机网络请求_fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决...