標籤:des android 使用 ar 檔案 c on 代碼 r
在開發中時常會遇到要用到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了
自行修改android.jar使其包含隱藏api