Android系统开发中,我们需要给有system uid的app配置签名,使用bp或者mk文件来签名也没有问题,就是太麻烦了,干脆把jks导入到Androidstudio里面一劳永逸.

mk的方式

//使用系统签名
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := alarmvoice/app-debug.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := AlarmvoiceService
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := .apk
LOCAL_VENDOR_MODULE := true
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
//不要使用系统签名
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := wifistateservice/WifiStateService.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := WifiStateService
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_SUFFIX := .apk
LOCAL_VENDOR_MODULE := true
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)

工具

签名的工具有三个,需要从你的源码环境里面copy出来:

  1. signapk.jar -----------> prebuilts/sdk/tools/lib/signapk.jar 文件位置
    build/make/tools/signapk 源码位置感兴趣的可以阅读.
  2. platform.x509.pem ----------------->build/make/target/product/security
  3. platform.pk8 ----------------->build/make/target/product/security

命令

我使用的是ubuntu 18.4系统,所以签名命令:
java -Xmx2048m -Djava.library.path=“lib64” -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk

生成jks文件

看看Androidstudio怎么配置的


android {...defaultConfig { ... }signingConfigs {debug {// You need to specify either an absolute path or include the// keystore file in the same directory as the build.gradle file.storeFile file("platform.jks")storePassword "android"keyAlias "android"keyPassword "android"}release {// You need to specify either an absolute path or include the// keystore file in the same directory as the build.gradle file.storeFile file("platform.jks")storePassword "android"keyAlias "android"keyPassword "android"}}buildTypes {release {signingConfig signingConfigs.release...}}
}

生成jks命令

首先确保安装了openssl keytool工具.

  1. openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
    这将从您的 pk8 文件生成一个文件“platform.priv.pem”。

  2. openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name android
    openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name {{KEY_ALIAS}}
    这将使用上一步生成的“platform.x509.pem”文件和之前生成的“platform.priv.pem”文件一起生成“platform.pk12”文件。 KEY_ALIAS是你自己提供的字符串值,它可以是你想要的任何内容,也需要你记住它。
    输入第二条命令后,系统将提示您输入密码(和密码确认)。 您将自己定义此密码。 这将是您的“密钥密码”,当然,您也需要记住它。

  3. keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android -alias android
    keytool -importkeystore -destkeystore {{STORE_FILE_NAME}}.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass {{KEY_PASSWORD}} -alias {{KEY_ALIAS}}
    命令3最后的命令实际上会做两件事之一:
    如果指定的 jks 文件已经存在,它将导入(如果存在则覆盖)具有给定别名的密钥.如果该文件尚不存在,它将创建一个全新的 jks 文件,并使用给定的别名导入您的密钥.无论如何,该命令接受先前定义的密钥密码和密钥别名。输入命令后,系统将提示您输入商店密码。 如果它是一个已经存在的 JKS 文件,您将必须提供已经存在的 JKS 存储密码。否则,就是你定义一个新的 JKS 新密码。 记住你赋予它的价值。

导入Androidstudio中

所以我们一共需要记住4个值:
key alias
key password
store password
store file name

//签名需要的内容
==================================================================================
signingConfigs {release {storeFile file("{{STORE_FILE_PATH*}}/{{STORE_FILE_NAME}}.jks")storePassword "{{STORE_PASSWORD}}"keyAlias "{{KEY_ALIAS}}"keyPassword "{{KEY_PASSWORD}}"}}
===================================================================================

ok,完成了.

Ubuntu系统下生成Android app系统签名相关推荐

  1. 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...

  2. linux导出mysql下ssl证书_Linux系统下生成证书 https证书

    平时都是用oneinstack加密https 现在因为本地调试 需要https 就找到这篇文章 Linux系统下生成证书 生成秘钥key,运行: $ openssl genrsa -des3 -out ...

  3. Linux系统下生成证书 https证书

    平时都是用oneinstack加密https 现在因为本地调试 需要https 就找到这篇文章 Linux系统下生成证书 生成秘钥key,运行: $ openssl genrsa -des3 -out ...

  4. Live-Android,让你在桌面系统下体验Android

    想体验Android系统么?打算买G1.G2.G3.G4么?(奶牛 都想很久了,呜呜,就是没银子)奶牛 找到了一个可以在桌面系统下体验Android系统的方法,下面拿来跟大家分享一下. 此教程适用于一 ...

  5. outlook2010签名设置 怎麼用html 设置名片,windows10系统下Outlook2010如何设置邮箱签名...

    经常使用邮箱的朋友们,都会设置一个邮箱签名.而邮箱签名就是在你发出的每封邮箱后面都会加上你的签名档内容,方便邮件接收者了解你的基本信息,相当于个人名片.那么,windows10系统下Outlook20 ...

  6. linux为用户指定资源大小,Linux_Linux系统下生成一个指定大小的文件,在装系统,因此在这里随便记 - phpStudy...

    Linux系统下生成一个指定大小的文件 在装系统,因此在这里随便记点东西. 从前与经理讨论NVR项目的时候,他提到要预先将用户指定好的磁盘空间预留出来,这是比较容易实现的功能.不容易实现的是自己写一个 ...

  7. 电脑运行linux虚拟盘闪退,Linux 系统下启动Android模拟器报错闪退

    Linux 系统下启动Android模拟器报错 Emulator: libGL error: unable to load driver: radeonsi_dri.so Emulator: libG ...

  8. android定制系统横评,专属定制 Win系统下的Android系统_酷比魔方 i7酷睿M_平板电脑评测-中关村在线...

    ■Windows 8.1系统下"安装Android系统" 酷比魔方 i7的三系统与其它产品的双系统有所不同,该机的Android系统是安装在Win系统下的,可以说是一个类似&quo ...

  9. 在UBUNTU LINUX下搭建 ANDROID开发

    菜鸟系列之一:在 UBUNTU LINUX下搭建 ANDROID开发 第一步:激活 ROOT用户.................................................... ...

最新文章

  1. AI开发难?请收下华为云AI大拿秘籍一份!
  2. Python使用matplotlib可视化条形图(bar plot)、自定义在条形图的顶部添加数值标签(Bar Chart)
  3. 转:【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)...
  4. 你在用什么思想编码:事务脚本 OR 面向对象?
  5. 盛佳:搜索是有目的的发现,发现是无目的的搜索
  6. PAT甲级1037 Magic Coupon:[C++题解]贪心
  7. ebs r12 -- adadmin: error while loading shared libraries: libclntsh.so.10.1
  8. sql server 触发器应用 insert
  9. 计算机达人成长之路(8)连载
  10. LibreOJ #6014. 「网络流 24 题」最长 k 可重区间集
  11. NETCDF C and FORTRAN 4.2 安装笔记
  12. 计算机二级lookup函数,LOOKUP函数用法全解(下)——LOOKUP函数的二分法原理
  13. 怎么开发qq群自动回复机器人呢?我教你
  14. 计算机提示无法找到启动盘,怎么解决进入系统启动项窗口找不到U盘启动项-电脑自学网...
  15. 论文笔记: 多标签学习 PML-NI 算法
  16. bf2无限载具服务器,战地2 局域网 飞机无限
  17. 【HCIP】BGP实验(联邦,路由反射器,手工汇总)
  18. unity中获取FPS
  19. PTA 1054 求平均值 (20 分)
  20. 超过一半美国车主下一辆仍想买燃油车,中国新能源汽车市场接受度明显高,续航里程均是首要关注 | 美通社头条...

热门文章

  1. 常见国内微博的字数限制 javascript判断
  2. fine-grained和coarse-grained理解
  3. 谈谈对于企业级系统架构的理解—李平
  4. js mysql date format,将MySql DateTime戳记转换为JavaScript的Date格式
  5. 【优化求解】基于PESA—II实现多目标优化求解matlab源码
  6. 2022—SWJTU-寒假ACM校队选拔赛第三场-题解
  7. 小程序开发框架WePY和mpvue使用感受
  8. docker ps -aq 是什么意思
  9. 移动机器人中的现代控制理论之能控能观与稳定性
  10. 尚学堂 高琪JAVA300集第十一章作业 编程题答案