使用keytool生成keystore签名文件并在android studio中配置系统签名简单记录

首先下载keytool工具,地址
https://github.com/getfatday/keytool-importkeypair

我的是放在桌面下,目录如下。

C:\Users\lei\Desktop\keytool-importkeypair-master\keytool-importkeypair-master
image.png

由于这个工具需要在linux中运行,但是我没有那个环境,因此使用MinGW代替。
打开 D:\MinGW\msys\1.0目录下的msys.bat,进入环境(类似win中的cmd)。
然后输入命令进入keytool-importkeypair目录下。

cd C:/Users/lei/Desktop/keytool-importkeypair-master/keytool-importkeypair-master

注意:这里命令中的文件目录用的是反斜杠不是斜杠。用的是斜杠的话在MinGW环境中就无法进入目录。会提示No such file or directory。

image.png
windows:
C:\Users\lei\Desktop\keytool-importkeypair-master\keytool-importkeypair-master
MinGW:
C:/Users/lei/Desktop/keytool-importkeypair-master/keytool-importkeypair-master

如下图所示,进入了keytool-importkeypair-master中。

image.png

然后将platform.x509.pem和platform.pk8 copy至keytool-importkeypair-master中(platform.x509.pem和platform.pk8就是编译系统的时候security文件夹下的文件,需要厂商提供)。

image.png
image.png

至此,准备工作完成,可以生成keystore文件了。
在MinGw中执行命令。

./keytool-importkeypair -k ./platform.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform

-k 表示要生成的 keystore 文件的名字,这里命名为 platform.keystore
-p 表示要生成的 keystore 的密码,这里是 android
-pk8 表示要导入的 platform.pk8 文件
-cert 表示要导入的platform.x509.pem
-alias 表示给生成的 platform.keystore 取一个别名,这是命名为 platform

image.png

然后platform.keystore文件就生成了。


image.png

这个文件就是android studio需要的签名文件,稍后在build.gradle中进行配置。
我把platform.keystore文件放到C:\test目录下了。因此storeFile file是C:\test\platform.keystore。

android {
    ................
    signingConfigs {
        debug   {
            storeFile file('C:\\test\\platform.keystore')
            storePassword 'android'
            keyAlias 'platform'
            keyPassword 'android'
        }
        release   {
            storeFile file('C:\\test\\platform.keystore')
            storePassword 'android'
            keyAlias 'platform'
            keyPassword 'android'
        }
    }

}

dependencies {
    ..............
}

然后还需要在project structure中配置一下buildTypes,这样run app后安装的就是带签名的。

image.png

设置buildTypes中debug的signing config为debug,release的signing config为release。

image.png
image.png

这样就不用每次使用编译生成apk然后使用signapk.jar生成带系统签名的apk了。
最后记得在AndroidManifest.xml文件中的对应位置加上 android:sharedUserId="android.uid.system"。


<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example......"

    android:sharedUserId="android.uid.system">

    .....

    .....

</manifest>

这样就是系统级权限的apk了。

参考链接:

让Android Studio支持系统签名(证书)
https://www.jianshu.com/p/47265c8899b5

推荐阅读更多精彩内容

  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 6,938评论 1 38
  • 也有提到怎么单独给一个apk签名,这里补充一下android的签名权限控制机制。 android的标准签名key有...
    WorkFamily阅读 3,681评论 2 4
  • 一、前言 Android 签名。 在说道Android签名之前,我们需要了解的几个知识点 1、数据摘要(数据指纹)...
    码寅阅读 7,714评论 1 6
  • Android 中签名 加密和HTTPS 一 RSA 加密算法 1. 非对称加密算法 1976年,两位美国计算机学...
    赤兔欢阅读 664评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 128,842评论 19 550