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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android RecyclerView添加Header头部
Android RecyclerView添加Header头部 Android RecyclerView不像以前的ListView那样直接添加头部,如果要给RecyclerView增加头部,则需要自己写或者使用第三方开源项目。RecyclerViewHeader是github上的一个开源项目,旨在为Android RecyclerView增加头部,其在github上的项目主页是:https://github.com/blipinsk/RecyclerViewHeader RecyclerViewHeader使用相对比较简单,写一个例子。注意RecyclerViewHeader的布局文件写法: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> &...
- 下一篇
iOS开发之UIScrollView无限滚动
UIScrollView 的无限滚动主要应用在图片轮播器、欢迎界面等场景。首先需要说明的是,文本所讲的是一种"笨办法",但是好理解且容易实现,在图片不多的时候用它也无妨。它的原理是在要显示的图片前后各加一张图片即在第一张图片之前放最后一张图片,在最后一张图片之后放第一张图片,然后在滚动到边缘的时候,巧妙的过渡一下就可以"瞒天过海","以假乱真"的造成无限滚动的假象。网络上有很多只用三张或两张图片实现的方法,效率比这个方法高,但实现起来稍微麻烦一点,有兴趣的可以去深入研究。 实现步骤 1、根据需求准备几张图片,在网上找了5张图片,分别命名为 img_01,img_02,img_03,img_04,img_05 。 2、代码实现,主要分为:添加UIScrollView,添加显示图片,添加UIPageControl,然后监听UIScrollView的滚动,根据滚动的位置来设置UIPageControl,最重要的是对于滚动到两个边缘时要特殊处理一下,代码如下: #import "ViewController.h" //屏幕宽度 #define SCREEN_WIDTH [UIScreen ma...
相关文章
文章评论
共有0条评论来说两句吧...