android app开发者经常受困于想调用系统hide的api却不能,而常用的方法是反射,本文将介绍一种用系统源码编译出来的class替换相应的api jar中的class文件的方法,正确的添加姿势如下:
首先,要拿到out目录下相应的原始的没有隐藏方法的class文件,以InputManager.class为例,比如我app要调用InputManager的injectInputEvent方法,此方法在google标准api中是隐藏的,因此需要替换使用。
1) 先把标准的api中android.jar解压,解压方法用jar或者重命名.zip文件然后解压都可以,找到要替换的class文件的具体名称以及路径。
2)从rom的out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes/android/hardware/input目录得到InputManager.class文件,接着需要创建InputManager.class在api中的目录结构,android/hardware/input
3)将api中android.jar和上一步创建的目录放到同级目录。
4)命令行执行:jar -uvf android.jar android/hardware/input/InputManager.class
大功告成,将此时的android.jar替换掉google标准api中的android.jar即可,从此就可以调用InputManager中隐藏的方法了。
Mark 一下,有备无患~~~