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

生系统签名的apk用的最多的有两种方法,这里将一一介绍一下:

一、第一种方法执行比较简单,但是不利于后期的调试,每调试一次就要重新执行签名的步奏生成系统签名:

1、开发具有系统权限的apk,这里就需要在AndroidManifest中配置ShareUserId,这个文件在该项目下app/src/main/AndroidManifest.xml。在这里文件里添加 android:sharedUserId="android.uid.system"就可以,当然只添加这一项是肯定不行的,当你添加这一行代码之后,就会发现该项目运行不了了,因为这里只是声明了系统权限并没有对他进行系统签名。

2、直接Build出来的apk是不能安装的,这时候还要对Build出来的apk进行系统签名,在cmd中执行如下命令,(为了方便,把这些文件都放在同一个文件夹下)签名的命令如下

其中oldapp.apk表示我们刚才直接Build生成的apk,newapp.apk表示我们需要生成的带系统签名的apk。signapk.jar,platform.x509,platform.pk8都是在源码文件中,当然如果你不会编译Android 源码你也可以直接在网上下载对应版本的源码。网上有许多教你如何去编译Android源码(https://www.jianshu.com/p/e0e992b51f31),编译完成之后,这些文件都可以在源码中找到一般都在../build/target/product/security中。生成的newapp.apk就是我们需要的系统apk了。

二、这里重点讲解第二种方法

1、需要的文件

             1.可用的Android Studio和Linux系统环境。

      2.Android源码环境,并且已经编译过了

     3.下载keytool-importkeypair https://github.com/getfatday/keytool-importkeypair

2、具体的操作

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

    2.在Android 源码环境中,进入build/target/product/security将platform.pk8,platform.x509.pem和第一步生成的jks放在一个目录中。

    3.在linux环境中,将keytool-importkeypair下载后,你可以将keytool-importkeypair这个可执行文件和jks等放到一个目录中。执行

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

    这样的话可以将系统签名引入到jks中。接下来只需要在Android Studio Run的时候对app签名时使用这个签名就可以了

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

  signingConfigs{
        release {
            storeFile file(“../app/SignApk/SignDemo1.jks")
            storePassword 'jks的密码'
            keyAlias "jks的别名"
            keyPassword 'jks的密码'
        }

        debug {
            storeFile file("../app/SignApk/SignDemo1.jks")
            storePassword 'jks的密码'
            keyAlias "jks的别名"
            keyPassword 'jks的密码'
        }
  }

       需要注意的就是,上面提到的jks密码就是在生成SignDemo.jks时你设置的密码。storeFile file就是你的SignDemo1.jks存放的位置,我这里就是把它存放在当前项目下的APP文件中(在app文件中新建SignAPK文件,再把SignDemo1.jks放入该文件中)

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

4、将生成的具有系统权限的apk推入到Android手机的系统目录中,也就是/system/app,应为这个目录中都是存放系统apk安装的地址。在推入之前,我们先来了解一下adb命令,adb命令可谓是非常的强大,他主要用于APP的调试。https://blog.csdn.net/zhonglunshun/article/details/78362439这些就是常用的adb命令,我们先来了解一下。

      了解完之后,我们就需要将系统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包。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值