一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.0、1.1到现在即将问世的Android 2.3.4。 这些隐藏的API本身可能是不稳定的,所以,使用隐藏API,意味着程序更差的兼容性。
如果要我给出建议的话,最好还是不要使用隐藏的API。不过有时为了实现Android应用某些特殊的功能或者效果,隐藏的API往往能发挥意想不到的作用。这些API具体能做些什么事,我就不在这里举例了。正好,如果你不知道隐藏API能做什么的话,那么还是尽早放弃使用它们吧……
不想长篇大论,直接进入正题吧。使用隐藏API主要有两种办法:一是我在《Java反射机制的学习》一文中提到的反射的方法得到隐藏API;二是使用源码编译时生成的全编译的jar包classes.jar。
使用反射的方式,在这里就不详细介绍了,具体见《Java反射机制的学习》。利用反射机制使用隐藏API的方法的优点是灵活,能够在不兼容的系统捕获异常,而使程序不至于崩溃;缺点是过程太繁杂,而且对于隐藏类的继承等很难实现。如果需要大量使用隐藏API,使用反射无疑会让程序员很烦的。
这篇文章主要要介绍的就是通过导入全编译的classes.jar包,来实现对隐藏API的使用。这种方法实现简单,程序员编程也简单,就像是那些隐藏的API在SDK中变得可见了一样。它的缺点就是兼容性问题,希望使用者引起重视,在使用时考虑清楚。
编译Android框架源码后,在源码路径下会生成out文件夹,在这个文件夹下的out"target"common"obj"JAVA_LIBRARIES"framework_intermediates"路径下,会生成全编译的jar库classes.jar。你需要做的就是将这个jar库导入到你的工程中。
在导入classes.jar过程中,有可能会出现两个问题(我是使用eclipse开发环境的,所以仅对此环境会遇到的问题进行说明)。
问题一是按导入其他jar的方式导入此jar库,发现编译很慢,有时甚至无法编译成功,eclipse崩溃或者提示“java.lang.OutOfMemoryError: Java Heap Space”错误。这个问题,可能是由于jar太大的原因吧,网上说改eclipse.ini里的参数,个人试了下,似乎没有什么作用。我的做法是在eclipse中新建自定义的library,然后将classes.jar放在library中。Android工程添加library,就像使用SDK一样。这样可以很好地解决这个问题。具体如何新建自定义的library我就不详述了,不知道的朋友自己搜索下或者摸索下,很简单的。
问题二是已经正确导入了jar库,却发现还是找不到隐藏的API。这个的原因是Build class path order不对,具体说就是android.jar和classes.jar的导入顺序不对。应该将classes.jar的顺序放在android.jar之前,具体调节Build class path order的地方就在properties -> Java Build Path -> Order and Export.。
成功解决这两个问题之后,相信你就可以正常使用Android隐藏API了。
转自:http://www.blogjava.net/zh-weir/archive/2011/05/01/349360.html
分享到:
相关推荐
NULL 博文链接:https://bgj.iteye.com/blog/2233718
利用java的反射原理来调用 Android隐藏api 应用开发必备哦 详细描述: http://blog.csdn.net/y_haiyang/article/details/9924925 ====================关注小鱼=================== 新浪微博:...
将下载的隐藏API文件复制,粘贴并替换到此目录中,例如android-30/android.jar 。 将compileSdkVersion和targetSdkVersion更改为30(例如)。 最后,重建您的项目。 注意:较高的compileSdkVersion和tar
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是为移动终端打造的真正开放和完整的移动...
2.3 android应用程序架构——从此开始 15 2.4 可视化的界面开发工具 18 2.5 部署应用程序到android手机 19 第3章 用户人机界面 22 3.1 更改与显示文字标签 23 3.2 更改手机窗口画面底色 24 3.3 ...
2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...
2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...
2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...
2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的...
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。...
Beta 版的Android SDK 提供了在Android 平台上使用JaVa 语言进行Android 应用开发必须的工具和API 接口。特性 ; 应用程序框架支持组件的重用与替换 ; Dalvik 虚拟机专为移动设备优化 ; 集成的浏览器基于开源的...
android4.2下 framework中的资源包,导入项目后可以使用android隐藏api。当使用 Android SDK 进行开发的时候,应用默认引用了 android.jar,它位于 SDKDir\platforms\android-X 目录下(X 代表 API 级别),默认移除...
他还是一位资深的Java软件开发工程师和Android/iOS移动应用开发工程师,活跃于CocoaChina、开源中国、CSDN等社区,CSDN博客专家,在CSDN博客撰写了系列微信公众平台二次开发的教程,深受欢迎并被广泛传播,也因此...
方法1:【使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后使用MM命令编译生成APK文件】 import java.io.File; import android.app.Activity; ...
我在安卓系统和应用程序开发中收集一些技巧和隐藏功能的游乐场包括: 活页夹调用系统或其他应用程序来归档一些不寻常的目标 启动和恢复以保持应用程序活着 全双工工控机 jni fork 监控应用程序卸载或其他事件 材料...
概述SuperToast是一个实用程序类,需要显示包装在实际上下文中的toast的 Android 开发人员可以使用它。 SuperToast 将显示在应用程序窗口的顶部位置。用法API 与 Toast API 一样简单。 创建实例: SuperToast ...