最近在做系统升级,需要很多的系统级别的权限,需要在应用的AndroidManifest.xml中package下面声明如下

android:sharedUserId="android.uid.system"

当我们使用了如上声明,而有没有给系统进行签名的时候可以就汇报如下错误 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

~$ adb install -r -d Demo-debug.apk
3191 KB/s (1636600 bytes in 0.500s)
Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Package couldn't be installed in /data/app/com.quectel.com.fourcameraperviewdemo-rBPPDBg7fjpxXm6o66lL9Q==: Package com.quectel.com.fourcameraperviewdemo has no signatures that match those in shared user android.uid.system; ignoring!]
~$

因此我们需要给应用签名,最常用的签名方式有两种

第一种是直接签名

第二种是生成平台签名给第三应用进行使用

第一种直接给apk进行签名,首先新建文件夹,将如下三个文件连同要签名的apk放到同一个文件夹下

prebuilts/sdk/tools/lib/signapk.jar
build/target/product/security/platform.x509.pem
build/target/product/security/platform.pk8

进入到当前文件夹执行如下命令即可 依赖于jdk 环境  Test.apk是自己的apk SignedTest.apk为签名之后的apk

java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 Test.apk  SignedTest.apk

如果懒得使用上面的命令可以使用如下脚本进行打包

#!/bin/bash
for file in $(ls)
doif [ "apk" == ${file##*.} ];thenapp_name=${file%.*}java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 $app_name\.apk  Signed$app_name\.apkrm $app_name\.apkmv Signed$app_name\.apk $app_name\.apkfi
done

第二种方式 就是生成秘钥提供给应用使用

keytool-importkeypair 工具和 signapk.jar 网上可以随出下载 将下载好的 keytool-importkeypair 和 signapk.jar工具放到上面的文件夹下执行 如下命令 其中 签名文件名称  密码 别名 保存好 一同发给应用

./keytool-importkeypair -k platform.keystore(生成的签名文件) -p 123456(密码) -pk8 platform.pk8 -cert platform.x509.pem -alias quectel(别名)

执行结果,这里就可以使用了,但是建议看输出的最后一句,建议使用 使用秘钥格式

~$ ./keytool-importkeypair -k platform.keystore -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias quectel
Importing "quectel" with SHA1 Fingerprint=10:D6:8E:CA:9C:8C:D5:50:7E:2B:EA:AF:E1:A2:AA:B0:68:92:7A:37
正在将密钥库 /tmp/keytool-importkeypair.MhLf/p12 导入到 platform.keystore...
已成功导入别名 quectel 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore platform.keystore -destkeystore platform.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
~$

执行如下命令

keytool -importkeystore -srckeystore platform.keystore -destkeystore platform.keystore -deststoretype pkcs12

需要输入密码 就是上面的密码 123456,可以看到只是做了个格式转换,将原来的签名文件加了一个 .old的文件

~$ keytool -importkeystore -srckeystore platform.keystore -destkeystore platform.keystore -deststoretype pkcs12
输入源密钥库口令:
已成功导入别名 quectel 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消Warning:
已将 "platform.keystore" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为 "platform.keystore.old" 进行了备份。
~$ ls

当应用拿到 签名文件之后就可以使用了

在 module的build.gradle中加入如下语句


android {compileSdkVersion 25buildToolsVersion "28.0.3"defaultConfig {applicationId "com.quectel.multicamera"minSdkVersion 25targetSdkVersion 28}//签名文件的配置signingConfigs {main {storeFile file("sign/platform.keystore") //签名文件路径storePassword "123456"  //密码keyAlias "quectel"      //别名keyPassword "123456"   //密码}}buildTypes {//release 签名release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}//debug 签名debug {minifyEnabled falsesigningConfig signingConfigs.mainproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'}}
}

Ubuntu下 生成系统签名以及给APK直接签名相关推荐

  1. ubuntu linux桌面快捷方式,Ubuntu下生成桌面快捷方式

    最近突然想使用Linux系统,然后希望在Linux系统下搭建一个android的开发环境,就下载了AndroidStudio.但是,因为是直接解压出来的,并不是正规下载安装的,所以一直找不到图标快捷方 ...

  2. Ubuntu下Linux系统部署fisco时bash操作报错权限不足(permission denied) failed to run command ‘........‘

    Ubuntu下Linux系统部署fisco时bash操作报错权限不足(permission denied) failed to run command '-' 例如这里就指的是fisco-bcos这个 ...

  3. android rom签名 作用,Ubuntu下折腾Android笔记(一)——ROM 签名 | 翅膀~

    2010.8.30 UPDATE:java环境的配置也可以直接使用openjdk,打开终端 sudo apt-get install openjdk-6-jre 就可以了. ------------- ...

  4. ubuntu下删除系统垃圾

    ubunu下删除系统垃圾 作者:rasis`beta 出处:http://hi.baidu.com/rabeta linux和windows系统不同,linux不会产生无用垃圾文件,但是在升级缓存中, ...

  5. ubuntu下给android手机机安装apk软件

    1,   cd到android SDK所在的目录下,然后进入platform-tools文件夹,将apk文件复制到该目录下 2,   显示文件后,你会发现有个名为adb的可执行文件,就是用这个adb命 ...

  6. ubuntu下备份系统以及遇到的问题

    TK1备份: 1.打开mk_backup,参考格式编写需要备份的目录: 2.进入U盘备份文件的存储目录,并将附件拷贝到当前目录: 3.执行如下命令:      sudo ./mk_backup.sh ...

  7. ubuntu生成Linux内核解压,Ubuntu下生成linux内核

    写在前面:由于老师所给的指导文档经过测试之后发现已经不太适用于现在ubuntu下面的实际操作情况(貌似这个是按照RED HAT下面的情况来写的),具体体现在一些指令不适用(mkinitrd),还有引导 ...

  8. Ubuntu下清理系统垃圾

    每次清理系统垃圾都要百度,这次直接把教程贴出了吧,原文链接如下: https://blog.csdn.net/tiankongtiankong01/article/details/53818172 U ...

  9. android签名方法,Android : apk系统签名的多种方法

    方法一:使用自己的Android签名工具给apk重新签名: (1)该目录下有 media.pk8.media.x509.pem.platform.pk8.platform.x509.pem.share ...

最新文章

  1. Spring Cloud Alibaba 高级特性 应用性能监控:通过 SkyWalking 实施链路追踪
  2. 磁盘管理,磁盘挂在mount,挂载光盘镜像文件,挂在U盘,umount 卸载命令, dd
  3. spotify音乐下载_使用Python和R对音乐进行聚类以在Spotify上创建播放列表。
  4. centos的mysql怎么删用户_linux/centos给Mysql创建用户、授权、查看、删除、修改密码、撤...
  5. mysql+url的配置参数详解_MySql链接url参数详解
  6. 华为p20Android怎么解开,华为P20如何获得root权限来解决自启动手机应用程序的问题...
  7. 对于高级搜索部分的要求
  8. 微信小程序获取数据并展示
  9. 10月编程语言排行榜:Java第一无悬念,老戏骨重回前三!
  10. arcgis栅格数据绘制等值线_ArcGIS Help 10.2 - 绘制等值线的工作原理
  11. 《鹰猎长空》看世界范围内电影票价上涨的原因
  12. C语言查表法实现CRC-32计算IEEE 802.3标准
  13. 兼容低功耗MCU和SoC、超低电流消耗 特瑞仕转换器家族再添一员
  14. windows下vue-cli及webpack 构建网站(一)环境安装
  15. PCB生产时“补偿”“开窗”是什么意思
  16. 深入解析:如何修复SSL / TLS握手失败错误(上)
  17. Eclipse工作空间配置导出/复制
  18. 送你一张带数据点分布的中国地图
  19. GitHub is free for teams -终于等到你
  20. 今日美食推荐html代码,今日美食推荐:荤素搭配,好吃美味!

热门文章

  1. 服务器系统装QC软件,QC安装部署
  2. java新技术有哪些,转疯了!
  3. 神经网络学习(二)Tensorflow-简单神经网络(全连接层神经网络)实现手写字体识别
  4. 2021五一放假几天,如何用桌面日历便签做日程安排
  5. C语言递归实现字符串反转(详解)
  6. Axhub插件一键复制Iconfont图标到Axure
  7. 浅析局域网ARP欺骗导致的信息泄露
  8. threejs加载C4D模型及材质渲染实例
  9. arcgis如何做lisa集聚图_GeoDa 制作北京LISA集聚图,显示错误,如图,怎样处理?...
  10. js给所有相同类名设置同样的样式