Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名

Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名


今天来点简单的我相信很多定制系统的同学都会有一些特定功能的需求,比如

  • 修改系统时间
  • 静默安装
  • 执行某shell命令

这些对于正常的应用来说,是需要很多技巧性的东西来做的,因为他们没有权限,而我们做定制系统的
话,可以给我们的应用来系统签名,这样就拥有系统的权限了,那我们应该怎么做呢?

我们以执行某shell命令为课题来解释:

首先,我们要知道,一般的命令都是在system/bin下,我们可以看图

这里写图片描述

使用shell命令,比如ls之类的,我们可以直接执行

try {
            Runtime runtime = Runtime.getRuntime();
            runtime.exec("ls");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

你会发现可以执行的,而且可以拿到返回值,通过返回一个Process,然后就可以拿到流了,这里不说,我们继续来看这个ls命令,如果你细心的话,你会发现,ls命令后面有一个字号:toolbox

这里写图片描述

关于toolbox,他是一个指令集,但是我们今天不讲他,但是你要知道他是一个全局集,有点类似配置了JAVA的环境变量,所有才会用户可以执行

但是我现在执行一个tinymix的指令

    try {
            Runtime runtime = Runtime.getRuntime();
            Process exec = runtime.exec("tinymix -D 1");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

他肯定会报操作不允许,也就是我们没有这个权限,拿我们应该怎么去拿到这个权限呢?就是通过我们的系统签名

1.设置sharedUserId

为了拿到权限,我们需要在清单文件的manifest里设置和系统同一个UserId

android:sharedUserId=”android.uid.system”

2.获取签名文件

签名文件有三个

  • platform.pk8
  • platform.x509.pem
  • signapk.jar

这三个都是可以在源码里拿到的

platform.pk8和platform.x509.pem都可以在build/target/product/security/目录下找到

signapk.jar在build/tools/signapk/目录下

3.系统签名

//执行命令
signapk.jar platform.x509.pem platform.pk8 input.apk output.apk

我们拿到之后把这几个放在同一个目录下,然后打开cmd,执行命令

这里写图片描述

这句命令后面两个apk分别是你要签名的apk名字和签名后的apk名字,比如我需要签名的apk叫做app_debug

执行命令后会的到

这里写图片描述

ok,我们现在拿到Test.apk可不能安装,需要push到system/app下,执行命令

adb push  apk路径  /system/app

但是很多人应该会报 Read-only file system错误的

这里写图片描述

那是因为你没有在remount模式下,你可以执行

adb root 
adb remount

就像这样

这里写图片描述

好的,至此,我们成功的系统签名了,接下来你就可以执行这个shell命令了

这里只是抛砖引玉下,各位自己发挥

有兴趣的可以加群:555974449

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/316094

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。