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

2013-11-19 09:55阅读:
在开发中时常会遇到要用到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了