Android工程中怎样使用暗藏API

 我来答
育知同创教育
2016-08-15 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
使用反射的方式,在这里就不详细介绍了,具体见《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了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式