Android中的隐藏API和Internal包的使用

对这篇文章“Android中的隐藏API和Internal包的使用之获取应用电量排行”(原文地址:http://blog.csdn.net/jiangwei0910410003/article/details/25994337)中的内容做了一下简单的排版和提炼。

当我们使用android的SDK进行开发的时候都会用到一个非常重要的jar文件--android.jar(Android SDK目录/platforms/platform-X/android.jar,X是API等级)。这个包中移除了所有被标记的尾@hide的类、方法、枚举、字段和Internal包。当我们的程序在设备上运行的时候会加载设备上的一个framework.jar的文件,它包含了移除的部分。所以为了使用那些Google对我们隐藏的内容,思路是想办法得到framework.jar,并把那些android.ja中缺少的API拿出来放到android.jar中。

下面介绍一种简单的方法来获取这些内容。


1,获取framework.jar
设备上有framework.jar这个文件,那么我们就从设备上来取。运行2.3.3版本模拟器,通过adb pull命令(也可以用DDMS)来完成提取工作:
adb pull /system/framework/framework.jar

获得了framework.jar文件后,将在下面的步骤中获得里面的classes.dex文件。这里必须注意以下两点:

1)真机中获取不到classes.dex文件的,真机上一般是经过优化了的.odex文件,所以需要到模拟器中获取!

2)要运行2.3.3版本的模拟器。2.3.3版本以上的模拟器中提取的framwork.jar中是没有classes.dex文件的。


2,将framework.jar改成framework.zip,解压,得到里面的classes.dex文件。


3,将.dex文件转换成.jar格式。这里用到了dex2jar这个工具

在Windows下使用dex2jar很简单,将第二步得到的classes.dex文件复制到dex2jar的解压目录中。在cmd窗口中进入dex2jar的解压目录,输入:dex2jar.bat classes.dex即可。转换结束后会在同一个文件夹中获得一个名为classes.dex.dex2jar.jar文件。


4,重命名classes.dex.dex2jar.jar成classes.dex.dex2jar.zip,解压。解压后文件夹中的内容如图所示:

     

5,将Android SDK目录/platforms/platform-X/中的android.jar拷贝出来,使用WinRAR打开。选择“命令--->添加文件到压缩文件中...”,然后选择第四步中得到的文件夹:



这里一定要注意,我们在android.jar的基础上添加classes-dex2.jar中的文件,所以更新方式选择为:跳过已经存在的文件,并且压缩文件格式一定要选择ZIP格式,否则在后面的使用中会报错。


然后点击确定,当WinRAR工作完毕,得到的android.jar就是我们需要的jar了。

OK,完成。

最后,使用我们制作的增强版jar时,将其复制回/platforms/platform-X/文件夹,覆盖里面原有的android.jar,然后再Eclipse中clean一下已存在工程即可使用了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和都提到了`org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin`这个错误,它表示在应用插件时发生了错误。这个错误可能是由于不正确的插件版本或依赖关系引起的。为了解决这个问题,可以尝试以下几个步骤: 1. 检查插件版本:确保使用的插件版本与项目的Gradle版本兼容。可以查看插件的文档或Gradle插件网站来获取兼容版本的信息。 2. 更新Gradle版本:如果插件版本与Gradle版本不兼容,可以尝试更新Gradle版本。在项目的`build.gradle`文件,将Gradle版本号更新为最新版本。 3. 检查依赖关系:如果错误信息提到了特定的插件,可以检查该插件的依赖关系是否正确。确保所有的依赖都正确地声明在项目的`build.gradle`文件或模块的`build.gradle`文件。 4. 清理和重新构建:有时,构建过程可能会出现一些临时文件或缓存导致问题。可以尝试执行Clean和Rebuild操作,清理项目并重新构建。 引用提到了在项目的`gradle.properties`文件添加`android.overridePathCheck=true`这个语句。这个语句的作用是禁用Gradle对文件路径的检查,可能会解决一些路径相关的问题。但是,在使用这个选项之前,要确保你理解它的意义和潜在的风险,并且只在确定没有其他解决方法的情况下使用。 总之,android studio的`org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin`错误通常是由于插件版本或依赖关系的问题引起的。通过检查插件版本、更新Gradle版本、检查依赖关系、清理和重新构建,以及在必要时使用`android.overridePathCheck=true`选项,可以解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [AndroidStudio报org.gradle.api.internal.plugins.PluginApplicationException问题](https://blog.csdn.net/CJohn1994/article/details/124616551)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Android studio出现Caused by: org.gradle.api.internal.plugins.PluginApplicationExceptio...报错](https://blog.csdn.net/Qxnedy/article/details/122873243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值