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

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

  1. Android源码浅析(六)——SecureCRT远程连接Linux,配置端点和字节码

    Android源码浅析(六)--SecureCRT远程连接Linux,配置端点和字节码 需要编译源码的同学,一般都是win+虚拟机吧,但是再虚拟机里体验并不是很好,所有市面上有很多的软件能够做到在wi ...

  2. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  3. Android源码浅析(三)——Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机

    Android源码浅析(三)--Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机 最近比较忙,而且又要维护自己的博客,视频和公众号,也就没 ...

  4. Android源码浅析(二)——Ubuntu Root,Git,VMware Tools,安装输入法,主题美化,Dock,安装JDK和配置环境

    Android源码浅析(二)--Ubuntu Root,Git,VMware Tools,安装输入法,主题美化,Dock,安装JDK和配置环境 接着上篇,上片主要是介绍了一些安装工具的小知识点Andr ...

  5. Android源码浅析(一)——VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安装配置

    Android源码浅析(一)--VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安装配置 最近地方工作,就是接触源码的东西了,所以好东西还是要分享,系列开了这 ...

  6. Android源码笔记——Camera系统架构

    Camera的架构与Android系统的整体架构保持一致,如下图所示,本文主要从以下四个方面对其进行说明. Framework:Camera.java Android Runtime:android_ ...

  7. 【Android 系统开发】使用 Source InSight 阅读 Android 源码

    1. 安装 Source Insight (1) Source Insight 相关资源 安装相关资源 : -- 下载地址 : http://www.sourceinsight.com/down35. ...

  8. Android源码之Gallery专题研究(1)

    前言 时光飞逝,从事Android系统开发已经两年了,总想写点什么来安慰自己.思考了很久总是无法下笔,觉得没什么好写的.现在终于决定写一些符合大多数人需求的东西,想必使用过Android手机的人们一定 ...

  9. 编译android源码m、mm、mmm命令的使用

    http://blog.163.com/zz_forward/blog/static/212898222201442873435471/ gcc怎么查看它的默认include路径和库的路径呢? //- ...

随机推荐

  1. Numpy&Pandas

    Numpy & Pandas 简介 此篇笔记参考来源为<莫烦Python> 运算速度快:numpy 和 pandas 都是采用 C 语言编写, pandas 又是基于 numpy, ...

  2. 洛谷 P2590 [ZJOI2008]树的统计(树链剖分)

    题目描述一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v ...

  3. 微信小程序开发•模块化

    微信小程序的MINA框架,其实是许多前端开发技术的组合.这篇文章中,我们来简单地讨论一下模块化. 1.模块化标准 玩前端的同学大部分都知道模块化的几个标准,CommonJs / AMD / CMD.这 ...

  4. Python传递参数的多种方式

    Python中根据函数的输入参数以及是否有返回值可分为四种函数: 1.无参数无返回值 2.有参数无返回值 3.无参数有返回值 4.有参数无返回值 Python 中参数传递有下列五种方式; 1.位置传递 ...

  5. [Codeforces 606C]Sorting Railway Cars

    Description An infinitely long railway has a train consisting of n cars, numbered from 1 to n (the n ...

  6. [SCOI2009]围豆豆

    Description Input 第一行两个整数N和M,为矩阵的边长. 第二行一个整数D,为豆子的总个数. 第三行包含D个整数V1到VD,分别为每颗豆子的分值. 接着N行有一个N×M的字符矩阵来描述 ...

  7. bzoj3622已经没有什么好害怕的了 dp+组合+容斥(?)

    3622: 已经没有什么好害怕的了 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1033  Solved: 480[Submit][Status][ ...

  8. spring boot新建项目启动报:Unregistering JMX-exposed beans on shutdown

    原因为:SpringBoot内置Tomcat没有正常启动,在pom.xml 中添加: <dependency> <groupId>org.springframework.boo ...

  9. C++中的explicit关键字的用法

    一.explicit作用: 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. 二.explicit使用注意事项: ...

  10. EtherChannel(PAgP、LACP)基本配置--端口聚合--(转)

    转自 http://blog.sina.com.cn/s/blog_635e1a9e01017msv.html EtherChannel EtherChannel(以太通道)也叫端口聚合或链路聚合,特 ...