当前位置:   article > 正文

使用Android studio自动生成带系统签名的apk_使用 android studio 给apk 签名

使用 android studio 给apk 签名

项目需求:给客户第三方定制的 扫读笔 上 开发 Launcher 应用,其中有一个定时关机的功能

关机代码如下(关机需要系统权限才能执行成功)

/**
     * 关机(需要系统权限)
     * @param context
     */
    public static void shutdownSys(Context context) {
        Intent intent = new Intent();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            intent.setAction("com.android.internal.intent.action.REQUEST_SHUTDOWN");
        } else {
            intent.setAction("android.intent.action.ACTION_REQUEST_SHUTDOWN");
        }
        intent.putExtra("android.intent.extra.KEY_CONFIRM", false);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

开始使用Android studio自动生成带系统签名的apk

一、在AndroidManifest.xml中配置ShareUserId

android:sharedUserId=“android.uid.system”

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxx.launcher"
    android:sharedUserId="android.uid.system"
    android:versionCode="47"
    android:versionName="4.2021.0315.1"  >
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

二、在Android Studio中build->Generate Signed APK,之后输入密码别名等,生成一个你自己的jks文件,普通apk签名文件

在这里插入图片描述

三、从第三方系统定制方那里 获得 系统签名文件

platform.pk8、platform.x509.pem
在这里插入图片描述

四、下载 keytool-importkeypair 系统签名工具 下载地址 下载地址二

解压 keytool-importkeypair 签名工具文件夹,
把 系统签名文件 platform.pk8、platform.x509.pem ,
还有自已apk普通的签名文件 jxw-key.jks
一起放入到签名工具文件夹中。
在这里插入图片描述

五、运行 keytool-importkeypair 系统签名工具

工具不能在Windows环境下使用,我是在centos中执行,需要给keytool-importkeypair文件权限:

[root@localhost soft]# chmod 7777 keytool-importkeypair 
  • 1

在次执行命令:

./keytool-importkeypair -k jks的文件名 -p jks的密码 -pk8 platform.pk8 -cert platform.x509.pem -alias jks的别名
  • 1

成功后,就将系统签名引入到自已的jks中了。

六、接下来只需要在Android Studio Run的时候对app签名时使用这个签名就可以了

在Android工程中,将如下内容添加到app的build.gradle中便可。

signingConfigs {
        debug {
            storeFile file("d:/sign/jxw-key.jks")
            storePassword 'jks的密码'
            keyAlias 'jks的别名'
            keyPassword 'jks的密码'
            v1SigningEnabled true
            v2SigningEnabled true
        }
        release {
            storeFile file("d:/sign/jxw-key.jks")
            storePassword 'jks的密码'
            keyAlias 'jks的别名'
            keyPassword 'jks的密码'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

配置完之后,就可以直接Build ->Build APK 生成的apk就可以直接安装了。

我们还可以将apk推入到/system/app系统目录下,因为用户apk和系统apk安装后,
他们的存放目录是不一样的。执行如下步奏:

  1.首先连接手机,进入命令行,输入:adb root,使得adb获取root权限。

  2.输入:adb shell,进入安卓shell

  3.输入:mount -o remount /system,将system路径挂载为可读可执行,否则后边会报Read-only权限问题,或者直接输入adb remount。

  4.输入:chmod 777 system/,修改system及子目录为可读写执行权限。

  5.输入:adb push 本地路径+apk文件名  目的路径(/system/app)

  6.输入adb reboot,重启机器,如果程序安装成功则大功告成,如果没有安装,则需要我们手动安装了,首先进入/system/app路径,使用:pm install apk包名,安装apk包。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

用openssl直接生成系统签名

方法一

1.android 源码目录build\target\product\security 取platform.pk8 platform.x509.pem放到一个目录下

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

3 openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey //生成pkcs12

Enter Export Password: (输入密码android,默认是android,如是自己制作的key,输入对应的密码)
Verifying - Enter Export Password:(输入密码android)

4 生成debug.keystore

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

在这里插入图片描述
Warning:
JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。

方法二

首先需要配好 openssl 和 jdk 的环境变量,然后重启电脑
在这里插入图片描述
然后把系统签名文件 platform.pk8、platform.x509.pem 放在同一个目录下
在此目录下输入以下命令,

//第一步:
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
//第二步:
openssl pkcs12 -export -in  platform.x509.pem -out platform.p12 -inkey  platform.pem -password pass:****** -name *****
//第三步:用java环境中的 keytool 工具生成签名文件
keytool -importkeystore -deststorepass ****** -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass ******
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
最后就可以成功得到 具有系统权限的签名文件 platform.jks

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/420045
推荐阅读
相关标签
  

闽ICP备14008679号