美文网首页Android
Android系统签名

Android系统签名

作者: 浪人残风 | 来源:发表于2021-07-07 14:55 被阅读0次

有时候,我们开发的apk需要用到系统权限,需要在AndroidManifest.xml中添加共享系统进程属性:

android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.shared"
android:sharedUserId="android.media"

这时候apk的签名就需要是系统签名(platform、shared或media)才能正常使用。
常用系统签名方式

Android源码环境下签名

这种方式比较麻烦,你需要有编译过的源码环境,并按如下步骤:
1、拷贝App源码到Android源码的packages/apps/目录下,且App源码是普通(Eclipse)格式的
2、配置Android.mk,在其中添加

LOCAL_CERTIFICATE := platform 或 shared 或 media

3、使用mm编译App,生成的apk即系统签名

手动重新签名

这种方式比在源码环境下签名简单,App可以在Eclipse或Android Studio下编译,然后给apk重新签名即可。
但这种方式在频繁调试的时候比较痛苦,即使写成脚本,也需要重复一样的操作。
相关文件
platform.x509.pem、platform.pk8、signapk.jar

文件位置
platform.x509.pem、platform.pk8:

../build/target/product/security

signapk.jar:

../out/host/linux-x86/framework

signapk源码路径:

../build/tools/signapk

签名命令

java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk

步骤

1、将相关文件及源apk文件置于同一路径下
2、检查源apk包,去掉META-INF/CERT.SF 和 META-INF/CERT.RSA 文件
3、执行签名命令即可

Android Studio系统签名

让Android Studio集成系统签名,需要用到一个工具keytool-importkeypair,详见下文。

keytool-importkeypair

keytool-importkeypair – A shell script to import key/certificate pairs into an existing Java keystore

这个工具的作用是将系统签名的相关信息导入到已有的签名文件里。

工具的使用方法可以通过–help或README.textile来寻求帮助

相关文件

platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh

我的做法是在App根目录新建Signature文件夹专门存放签名相关文件。
步骤

1、生成demo.jks签名文件

2、编写签名脚本signature.sh,内容如下:

#!/bin/sh

# 转换系统签名命令


# demo.jks : 签名文件
# 123456 : 签名文件密码
# platform.pk8、platform.x509.pem : 系统签名文件
# demo : 签名文件别名
./keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo

为脚本文件添加可执行权限:

$ sudo chmod a+x signature.sh

执行脚本:

$ ./signature.sh

3、配置builde.gradle

在android区域下(与defaultConfig同级)添加配置:

signingConfigs {
    release {
        storeFile file("../signature/demo.jks")
        storePassword '123456'
        keyAlias 'demo'
        keyPassword '123456'
    }

    debug {
        storeFile file("../signature/demo.jks")
        storePassword '123456'
        keyAlias 'demo'
        keyPassword '123456'
    }
}

这样debug或release apk就带有系统签名了。

如果想直接Run app就是release版且带系统签名的apk,还需修改:

  1. 变体app


    image.png
  1. 修改buildTypes:
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.release
    }
}

这样直接Run app就是带系统签名的release版apk了。

相关文章

  • Android 中使用系统签名的方法

    Android 中使用系统签名的方法 Android Build中系统签名使用方法 Key的目录 默认加密key是...

  • Android实践 -- 对apk进行系统签名

    对apk进行系统签名 签名工具 网盘下载 ,需要Android系统的签名的文件platform.x509.pem ...

  • 查看apk签名信息和第三方应用的签名信息

    Android如何查看应用签名信息 介绍Android如何查看自己的应用签名及三方APK或系统APK签名信息,包含...

  • Android 生成系统签名的

    Android 生成系统签名的KeyStore 应用想要获取系统权限的话就必须要有系统签名,但是在开发一个系统的时...

  • 前端技术月报201812期

    Android App签名流程分析 App签名机制是Android系统的安全保障,可防止App被恶意修改,有效阻止...

  • 如何用Android 源码生成APK签名文件

    如何用Android 源码生成签名文件 我们很多应用需要用到系统签名,可以通过生成系统签名文件,在生成apk时使用...

  • android 系统签名

    也有提到怎么单独给一个apk签名,这里补充一下android的签名权限控制机制。 android的标准签名key有...

  • Android系统签名

    长话短说,有时候我们的应用需要用到系统签名才能调用一些方法,那么就需要在清单上加uid 一般这种情况都是apk在A...

  • [Android]系统签名

    签名标签有四种, testkey 、media 、 platform 、shared build/target...

  • Android系统签名

    直接使用平台签名 对于某些需要系统签名的应用可以使用以下方法来签名签名文件在源码中的路径build/make/ta...

网友评论

    本文标题:Android系统签名

    本文链接:https://www.haomeiwen.com/subject/jmppyltx.html