文档章节

自行修改android.jar使其包含隐藏api

f
 fjabing
发布于 2014/10/05 15:36
字数 363
阅读 217
收藏 12

在开发中时常会遇到要用到android隐藏api的情况,通常的做法是通过反射去调用,但是反射带来性能上的影响,代码也不够直观,我更偏爱直接使用那些api。

于是这就是本文的开始,自己改造一个android.jar,使其包含隐藏api


其实步骤很简单,因为android系统内带的framework.jar已经包含了隐藏api,只需将其抽取并放到android.jar内就好了,整理一下就是:


1) 从指定版本的rom内获取到framework.jar

2) 解压framework.jar和android sdk内的android.jar

3) 将framework.jar解出来的东西拷到android.jar解出来的东西内,进行覆盖

4) 重新打包

5) 用新的android.jar替换原先的


方便起见,写了一个脚本来完成以上工作,其中解framework.jar用到dex2jar工具,请自行下载并配置环境变量


#!/bin/sh

DEX=$1

AJAR=$2

OUT=$3

d2j-dex2jar.sh $DEX -o framework-dex.jar

mv framework-dex.jar framework-dex.zip

unzip -d framework-dex framework-dex.zip

cp $AJAR android-sdk.zip

unzip -d android-sdk android-sdk.zip

cp -r -f framework-dex/* android-sdk/

cd android-sdk

zip -r android-new.zip *

cd ..

mv android-sdk/android-new.zip android-new.zip

mv android-new.zip android-new.jar

rm android-sdk.zip

rm framework-dex.zip

rm -fr android-sdk/

rm -fr framework-dex/

mv android-new.jar $OUT

echo "done"


使用也很简单,将这段脚本存为makesdk.sh并给予可执行权限,然后使用之

$ makesdk.sh framework.jar android.jar ~/Desktop/

执行完成后,即可在桌面上看到一个名为android-new.jar的文件,这就是包含隐藏api的sdk了


本文转载自:http://blog.sina.com.cn/s/blog_68b671430101nm3w.html

共有 人打赏支持
f
粉丝 1
博文 70
码字总数 7656
作品 0
龙岩
Android Studio 查看Android内部隐藏源码

问题的发现 今天查看AlertDialog源码的时候,看到AlertController,发现关于这部分的代码全都报红,原来AlertController类在com.android.internal.app这个包下,看这个包名internal(内部的)...

zhang_pan
04/10
0
0
Android开发中怎样使用隐藏的API

一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.0、1.1到现在即将问...

鉴客
2012/02/23
563
1
Android应用开发中如何使用隐藏API

一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide 标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.0、1.1到现在即将问...

小克898
2015/09/01
167
0
阅读Android源码的一些姿势

前面吐槽了 有没有必要阅读Android源码,后面觉得只吐槽不太好,还是应该多少弄点干货。 日常开发中怎么阅读源码 找到正确的源码 IDE是日常经常用的东西,Eclipse就不说了,直接从Android S...

Kaede
2017/11/29
0
0
Android 无须获取Root权限静默安装App

参考链接 android 静默安装 [Android]实现静默安装APK的两种方法 一.非Root即可静默安装APK需要满足以下条件 app进程和系统app进程是同一个进程,这个设置 android:sharedUserId="android.ui...

IamOkay
2015/08/17
0
5

没有更多内容

加载失败,请刷新页面

加载更多

【挑战剑指offer】系列03:逆序打印单链表

本系列的算法原题来自于“牛客网-剑指offer”,写这个板块,不仅仅是解决算法问题本身,更是手动提高难度、自行变式,思考更多的解决方案,以带给自己一些启发。 1. 【逆序打印单链表】原始题...

LinkedBear
46分钟前
2
0
Linux内存布局

今天这篇文章主要是我之前看Linux内核相关知识和博客Gustavo Duarte中。我主要是看了这篇博客,并且结合之前的知识,对内存管理的的理解又上升了一个档次。所以想通过这篇文章总结下。 我们先...

linuxprobe16
今天
1
0
day94-20180921-英语流利阅读-待学习

记录死亡还是消费死者?自杀报道的媒体偏见 雪梨 2018-09-21 1.今日导读 自杀事件报道一直是新闻报道的重要部分,具有骇人听闻、吸引眼球的特点。可是在报道这些事件的时候,除了客观陈述事实...

飞鱼说编程
今天
4
0
如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
5
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部