Android应用开发中如何使用隐藏AP

转载 2012年03月22日 11:25:58


      一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.01.1到现在即将问世的Android 2.3.4。 这些隐藏的API本身可能是不稳定的,所以,使用隐藏API,意味着程序更差的兼容性。


    如果要我给出建议的话,最好还是不要使用隐藏的API。不过有时为了实现Android应用某些特殊的功能或者效果,隐藏的API往往能发挥意想不到的作用。这些API具体能做些什么事,我就不在这里举例了。正好,如果你不知道隐藏API能做什么的话,那么还是尽早放弃使用它们吧……


    不想长篇大论,直接进入正题吧。使用隐藏API主要有两种办法:一是我在《
Java反射机制的学习》一文中提到的反射的方法得到隐藏API;二是使用源码编译时生成的全编译的jarclasses.jar


    使用反射的方式,在这里就不详细介绍了,具体见《
Java反射机制的学习》。利用反射机制使用隐藏API的方法的优点是灵活,能够在不兼容的系统捕获异常,而使程序不至于崩溃;缺点是过程太繁杂,而且对于隐藏类的继承等很难实现。如果需要大量使用隐藏API,使用反射无疑会让程序员很烦的。


    这篇文章主要要介绍的就是通过导入全编译的classes.jar包,来实现对隐藏API的使用。这种方法实现简单,程序员编程也简单,就像是那些隐藏的APISDK中变得可见了一样。它的缺点就是兼容性问题,希望使用者引起重视,在使用时考虑清楚。


    编译Android框架源码后,在源码路径下会生成out文件夹,在这个文件夹下的out"target"common"obj"JAVA_LIBRARIES"framework_intermediates"路径下,会生成全编译的jarclasses.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.jarclasses.jar的导入顺序不对。应该将classes.jar的顺序放在android.jar之前,具体调节Build class path order的地方就在properties -> Java Build Path -> Order and Export.


    成功解决这两个问题之后,相信你就可以正常使用Android隐藏API了。

Android 隐藏程序的图标并使用其他APP启动

很多时候我们在开发中为了满足程序的特别要求,往往一个程序会分解为多个apk,启动其他程序的程序我这里暂且称之为主程序,被启动的程序我这里暂且称之为子程序。通常主程序通过ComponentName指定要...
  • niepangu
  • niepangu
  • 2016年06月20日 12:23
  • 1558

android使用隐藏api的方法(使用被@hide的api)

原文地址:http://blog.sina.com.cn/s/blog_5da93c8f0101e1yj.html 前言: 一开始需要说明的是,Google之所以要将一些API隐藏(指...
  • f2006116
  • f2006116
  • 2016年03月05日 19:31
  • 2133

Android 如何隐藏应用程序的图标

如果你的应用需要隐藏图标,那么这篇文章接下来的段落对你可能有所帮助。   在找到本文之前,你也许已经尝试过诸如以下的解决方案: 1,AndroidManifest.xml文件中在入口...
  • jdsjlzx
  • jdsjlzx
  • 2014年03月25日 17:01
  • 51639

Android应用开发中如何使用隐藏API

原文地址:http://my.oschina.net/owen123456/blog/500075 一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide 标记的public...
  • f2006116
  • f2006116
  • 2016年03月07日 10:18
  • 320

Android应用开发中如何使用隐藏API

一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.0、1.1到...
  • u010952965
  • u010952965
  • 2014年07月16日 14:48
  • 285

Android应用开发中如何使用隐藏API

一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.0、1.1到...
  • z516518
  • z516518
  • 2011年09月25日 22:34
  • 624

Android应用开发中如何使用隐藏API

http://www.blogjava.net/zh-weir/archive/2011/05/01/349360.html 一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hid...
  • forlong401
  • forlong401
  • 2013年03月06日 22:03
  • 732

Android应用开发中如何使用隐藏API

一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类、方法或常量)是有原因的。其中很大的原因就是Android系统本身还在不断的进化发展中。从1.0、1.1到...
  • arfee_11
  • arfee_11
  • 2012年11月08日 21:07
  • 579

Android应用开发中如何使用隐藏的API

Android应用中有时为了实现某些特殊的功能或效果,往往需要使用一些谷歌隐藏的API(加有@hide标记的public类、方法或常量),例如PolicyManager。         使用And...
  • sxwyf248
  • sxwyf248
  • 2012年02月22日 23:18
  • 3753

Android应用开发中如何使用隐藏的API

Android应用中有时为了实现某些特殊的功能或效果,往往需要使用一些谷歌隐藏的API(加有@hide标记的public类、方法或常量),例如PolicyManager。         使用And...
  • lostinai
  • lostinai
  • 2015年05月26日 18:01
  • 564
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android应用开发中如何使用隐藏AP
举报原因:
原因补充:

(最多只允许输入30个字)