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

在开发中时常会遇到要用到android隐藏api的状况,一般的作法是经过反射去调用,可是反射带来性能上的影响,代码也不够直观,我更偏心直接使用那些api。android

因而这就是本文的开始,本身改造一个android.jar,使其包含隐藏apiapi


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


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

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

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

4) 从新打包android-sdk

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了

相关文章
相关标签/搜索