赞
踩
生系统签名的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包。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。