Android系统签名转换为keystore

Android  2020年6月17日 pm12:16发布5年前 (2020)更新 城堡大人
117 0 0

为啥需要keystore

通常,我们在做系统用户开发时,需要给应用加上系统签名,使其拥有系统权限,签名方式可以使用系统源码中的platform.pk8、platform.x509.pem、signapk.jar对应用签名。

PS:参考之前的文章《利用signapk.jar工具对apk文件进行签名》

这种方法对于开发者来说非常不方便,每次编译完成之后还有进行签名操作。因此考虑把签名文件转成为keystore文件,这样Eclipse和Android Studio可以导入签名文件并一键生成签名后的apk。

keystore的生成

PS:进入进入有platform.x509.pem、platform.pk8等的目录:/build/target/product/security

第一步

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt

第二步

其中的water是keyAlias,你可以换成自己的关键字

openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name water

输入如此命令后提示输入[Enter Export Password],输入两次android(这里好像只能输入android?具体原因不知)。我测试过用其他的比如字符串为water或者其他的,最后一步通不过。

有如下提示:

keytool error: java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded

第三步

-alias water 是我们上面设置的keyAlias

keytool -importkeystore -deststorepass android -destkeypass android -destkeystore source.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias water

经过编译,会生成一个source.keystore

keystore的使用

Android Studio 修改module中的build.gradle
android {
    signingConfigs {
        release {
            storeFile file('E:\\Andorid_Workplace\\key_store\\source.keystore')
            storePassword 'android'
            keyAlias = 'water'
            keyPassword 'android'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.release
        }
    }
Eclipse的使用

在Window->Preferences->Android->Build->Custom debug keystore 选择source.keystore ,点击apply 就可以使用eclipse直接运行调试了。

但是,如果上面编译的source.keystore中的keyAlias不是androiddebugkey(比如我的是water),就会有如下的提示:

Unable to find debug key in keystore!

修改这个问题就是在编译keystone时keyAlias设置为androiddebugkey就可以解决问题。(PS:把我上面的water改成androiddebugkey即可)

本文参考文章:

  1. Unable to find debug key in keystore in Eclipse
  2. Android系统签名转换为keystore

 历史上的今天

  1. 2024: 圆形顺时针滚动ImageView(1条评论)
  2. 2023: Launcher根据包名启动应用(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

梁启超:为什么劝你在业余时间练书法

凡人必定要有娱乐。在正当的工作及研究学问以外,换一换空气找点娱乐品,精神才提得起来。假使全是义务工作,生活一定干燥、厌烦、无味。有一两样或者两三样娱乐品调剂一下,生活就有趣味多了。娱乐的工具很多,譬如喝酒、打牌、下棋、唱歌、听戏、弹琴、绘画、吟诗,都是娱乐,各有各的好处。但是要在各种娱乐之中,选择...

舒婷:这也是一切

——答北岛的《一切》不是一切大树都被风暴折断; 不是一切种子都找不到生根的土壤; 不是一切真情都流失在人心的沙漠里; 不是一切梦想都甘愿被折断翅膀。 不、不是一切都像你说的那样! 不是一切火焰都只燃烧自我而不把别人...

梁小斌:中国,我的钥匙丢了

中国,我的钥匙丢了。 那是十多年前,我沿着红色大街疯狂地奔跑,我跑到了郊外的荒野上欢叫,后来,我的钥匙丢了。 心灵,苦难的心灵,不愿再流浪了,我想回家打开抽屉、翻一翻我儿童时代的画片,还看一看那夹在书页里的翠绿的三叶草。 而且,我还想打开...

《MySQL基础教程》笔记9

前言主要是介绍PHP中正则表达式的介绍等。根据《MySQL基础教程-西泽梦路》学习,简单的做一下笔记。记录于此,方便自己回忆。正文require_once看其名字,就是请求一次,这很常用。require_once(文件名);正则表达式什么是正则表达式正则表达式是一种用于描述字符...

Activity的Context介绍

前言对于Application,Activity和Service这几个类,我们是很[熟悉]的。确实[熟悉],作为App开发这基本都要面对这几个类。比较好奇的朋友会发现,他们都拥有Context,但他们的Context有似乎有一点点的不同。今天有空,根据网上大佬的步伐,在这里简单记录一下。正文...

MediaPlayer源码介绍2

前言之前介绍MediaPlayer ,接上文《MediaPlayer JNI层介绍》(看做《MediaPlayer源码介绍1》)介绍到mediaplayer.cpp,这也是一个代理,真正处理的并不是这个。今天以setDataSource()为例继续分析。涉及代码frameworks\av\...