文档章节

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

f
 fjabing
发布于 2014/10/05 15:36
字数 363
阅读 223
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
3
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
4
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
7
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部