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. [LeetCode] Binary Number with Alternating Bits 有交替位的二进制数

    Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will a ...

  2. 爱奇艺2018春招Java工程师编程题题解

    字典序最大子序列 题目描述 对于字符串a和b,如果移除字符串a中的一些字母(可以全部移除,也可以一个都不移除)就能够得到字符串b我们就称b是a的子序列. 例如."heo"是&quo ...

  3. SpringIOC学习二

    Spring的IOC容器通过依赖注入DI(dependency injection)来实现程序之间的依赖关系,达到解耦的方式依赖的方式:a.基于xml文件配置的注入    * 构造函数注入    * ...

  4. [HAOI 2011]向量

    Description 题库链接 给你一对数 \(a,b\) ,你可以任意使用 \((a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b ...

  5. [AHOI 2005]COMMON 约数研究

    Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...

  6. 【HDU 2669】Romantic

    Problem Description The Sky is Sprite.The Birds is Fly in the Sky.The Wind is Wonderful.Blew Throw t ...

  7. Codeforces Round #438 B. Race Against Time

    Description Have you ever tried to explain to the coordinator, why it is eight hours to the contest ...

  8. bzoj 4974: 字符串大师

    Description 一个串T是S的循环节,当且仅当存在正整数k,使得S是T^k(即T重复k次)的前缀,比如abcd是abcdabcdab的循环节 .给定一个长度为n的仅由小写字符构成的字符串S,请 ...

  9. Java8——快速入门手册(学习笔记)

    github博文传送门 Java8特性学习笔记 Java8中新增了许多的新特性,在这里本人研究学习了几个较为常用的特性,在这里与大家进行分享.(这里推荐深入理解Java 8用于理解基础知识)本文分为以 ...

  10. 设置元素text-overflow: ellipsis后引起的文本对齐问题

    .ellipsis { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } 给元素设置了这个属性之后,该行内元素和旁边的 ...