欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 8.1系统签名详解

程序员文章站 2024-03-15 14:06:23
...

在工作中我们经常会提供接口给客户调用,我们就需要提供jar给客户调用,客户那边使用就都需要系统的签名才能正常运行。而如果我们想用Android Studio单独开发某个应用而使用系统签名的时候,有两种开发的方式,一种是编译完成后,使用SignApk.jar来进行签名,另外一种是把系统的pemplatform.pk8和platform.x509转换成为Android Studio常用的 .keystore文件,编译时候自动签名。
Android系统签名证书的目录是“build/target/product/security”。
Android 8.1系统签名详解一、SignApk.jar签名
1、工具下载地址:链接:https://pan.baidu.com/s/1cLQFMFyRzCuTxP99QiEG0A 提取码:ck2g
Android 8.1系统签名详解2、拿到终端上系统的签名(由定制系统的厂商提供):
Android 8.1系统签名详解3、在应用程序的项目中配置:
androidManifest.xml中添加android:sharedUserId=“android.uid.system”

<manifest  xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.xxxx.xxxx"
           android:sharedUserId="android.uid.system">

</manifest>

4、将(机器)系统的签名放到signapk同一个目录中
Android 8.1系统签名详解5、AndroidStudio通过build–> 生成带有签名的apk,将程序apk放到signapk同一个目录中:
Android 8.1系统签名详解Android 8.1系统签名详解Android 8.1系统签名详解6、在signapk所在文件夹中运行命令行:
为应用程序配置系统的签名:
解释: 第一个xxx.apk是项目打包后的apk, 第二个xx.apk被系统签名后的apk。

work\tools\signapk>java -jar signapk.jar  platform.x509.pem platform.pk8 app-release.apk app-releasetest.apk

结果提示:

Usage: signapk publickey.x509[.pem] privatekey.pk8 input.jar output.jar

再次调整未被系统签名的apk的路径,将apk拖动放到命令行中,重新输入:

work\tools\signapk>java -jar signapk.jar  platform.x509.pem platform.pk8 G:\wangqi\work\tools\signapk\app-release.apk app-release-test.apk

7、 最终效果如下:
被系统签名后的apk如下:
Android 8.1系统签名详解
二、转换为 .keystore文件

keytool-importkeypair下载地址:https://github.com/getfatday/keytool-importkeypair
1、蒋keytool-importkeypair下载下来的文件拷贝到Linux中,然后再拷贝platform.pk8 和 platform.x509.pem文件到keytool-importkeypair目录下面
Android 8.1系统签名详解
2、使用如下命令来执行:

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

Android 8.1系统签名详解
3、修改 build.gradle 再次编译即可

 signingConfigs {
        release {
            storeFile file('keystore/platform.keystore')
            keyAlias 'platform'
            keyPassword 'android'
            storePassword 'android'
        }
        debug {
            storeFile file('keystore/platform.keystore')
            keyAlias 'platform'
            keyPassword 'android'
            storePassword 'android'
        }
    }
相关标签: Framework