如何使用android系统隐藏hide的类和方法

IBinder wmbinder = ServiceManager.getService( "window" );

final IWindowManager wm = IWindowManager.Stub.asInterface( wmbinder );

  需要引入的类是:

  import android.os.ServiceManager;

  import android.view.IWindowManager;

出现cannot resolved问题

在应用开发过程中,可能会需要使用到系统的方法,比如:SystemProperties 以及系统隐藏hide的方法和类,比如:IWindowManager。那么要直接在eclipse或者android studio 中怎么弄呢?下面教大家方法:

  1. 首先编译Android的系统,其实直接编译framework也行,在编译完成后在out\target\common\obj\JAVA_LIBRARIES\framework_intermediates下面有个classes.jar的文件,我们就需要这个jar文件。
  2. 将classes.jar放在某个文件夹下面,然后将其解压,我们可以得到一个android文件夹和META_INF文件夹,
  3. 找到我们常使用的sdk版本目录下面的android.jar,比如:sdk\platforms\android-19\android.jar,将其放在某个文件夹下面解压。解压后会得到很多个文件夹,包括:android,java,com,javax,org,META_INF等文件夹以及resources.arsc文件。
  4. 将上面classes.jar解压出来的android文件夹下面的所有文件,复制到android.jar解压出来的android文件夹里面,并覆盖相同文件名的文件及文件夹。其实你注意上面的两个android文件夹内容大致一样。
  5. 下面到了最关键的一步,就是把现有的文件夹中的classes打包成java文件,首先在解压android.jar的根目录下面打开cmd命令窗口,输入命令jar cvfm android.jar META-INF/MANIFEST.MF ./ 。如果找不到jar,请先配置环境变量。接着就看到这个打包的详细信息在控制台输出。关于jar的详细命令参数请看这里jar命令详解
  6. 顺利的话,就可以得到一个android.jar 文件了,然后在把得到的jar文件解压看看是否和原来的结构一直,不要多打包一层文件目录哟,不然肯定没办法用的,如果正确的话,将替换我们sdk中的android.jar文件。例如替换:sdk\platforms\android-19\android.jar文件。
  7. 然后测试,打开eclipse,随便在一个android工程中的java文件中输入SurfaceControl看看系统是否会提示我们导入SurfaceControl包,注意4.3以上才有SurfaceControl哟,如果没有则看看检测上面哪一步是否出错了
  8. 易错点总结:
  1. 要保证第一步生成的classes.jar文件是正确的,有的系统打包的classes默认是在classes.odex中,如果解压出来没有android文件夹基本就是这个问题了。
  2. 是否用classes.jar解压出来的android文件夹完全覆盖android.jar解压出来的android文件夹下面的内容。因为隐藏的方法都是在classes.jar解压出来的android文件夹下面。
  3. 在打包命令的时候,文件夹跟目录错误,导致打包出来的jar多一层文件夹,或者少一层(少打包其他文件夹),大概android.jar 大小有20M左右。
  4. jar 命令参数有误,请具体参看jar方法参数的使用方法和含义。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值