<为知更新>windows下使用android隐藏api的方法
2012-12-18 18:34
525 查看
我们使用sdk在开发一个android项目时,往往不能使用被隐藏的api。例如:把android自带的 应用,导入eclipse后,往往出现很多错误。
以下 所介绍的方法必须要先在linux下编译,但仅仅只是编译,开发还是在windows下。
根据java 编程规范,我们知道这个api (静态变量)被隐藏掉了,所以在sdk中无法使用。
添加framework 编译出来的classes.jar文件到eclipse的build path
其实在编译android的时候,我们将framework 编译到一个临时的jar包中了,这个jar包的路径一般为:
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
我们只需要在linux上android源代码目录下使用 make 命令即可生成此文件。
由于这个jar文件中的api 还没有重新打包,里面被@hide掉的api并没有被去掉。所以我们依然能够引用里面被@hide的api。
而sdk 中的android.jar文件是重新打包生成的,其里标记有@hide的api已经被去掉了。所以我们把 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 拷贝到本地pc上。然后在工程中添加此jar包。
具体方法:
1. 拷贝linux编译生成的 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar到本机PC。
2. 在eclipse的Android项目中,选择项目属性->Java Build Path->Libraries->Add Library->User Library->Next-> UserLibraries进入到User Libraries管理界面,点击New新建一个User Library,名字任意,比如android_src_api,注意:这里必须选
把as system Library选上,否则 编译apk的时候 会卡死!
然后点击Add Jars把Jar包加入到建立的User Library中,最后点击OK。
3.选择项目属性->Java Build Path->Order and Export,使用右面的“UP”键,把所建立的User Libraries移到Android SDK的上面。这样做的意思就是优先使用classes.jar中的API,其次使用android.jar中的API。
如下图:
之后我们的工程错误消失了:
为什么不直接使用classes.Jar? 因为我在使用时发现,android.jar中有的东西classes.jar中没有。
以下 所介绍的方法必须要先在linux下编译,但仅仅只是编译,开发还是在windows下。
根据java 编程规范,我们知道这个api (静态变量)被隐藏掉了,所以在sdk中无法使用。
添加framework 编译出来的classes.jar文件到eclipse的build path
其实在编译android的时候,我们将framework 编译到一个临时的jar包中了,这个jar包的路径一般为:
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
我们只需要在linux上android源代码目录下使用 make 命令即可生成此文件。
由于这个jar文件中的api 还没有重新打包,里面被@hide掉的api并没有被去掉。所以我们依然能够引用里面被@hide的api。
而sdk 中的android.jar文件是重新打包生成的,其里标记有@hide的api已经被去掉了。所以我们把 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 拷贝到本地pc上。然后在工程中添加此jar包。
具体方法:
1. 拷贝linux编译生成的 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar到本机PC。
2. 在eclipse的Android项目中,选择项目属性->Java Build Path->Libraries->Add Library->User Library->Next-> UserLibraries进入到User Libraries管理界面,点击New新建一个User Library,名字任意,比如android_src_api,注意:这里必须选
把as system Library选上,否则 编译apk的时候 会卡死!
然后点击Add Jars把Jar包加入到建立的User Library中,最后点击OK。
3.选择项目属性->Java Build Path->Order and Export,使用右面的“UP”键,把所建立的User Libraries移到Android SDK的上面。这样做的意思就是优先使用classes.jar中的API,其次使用android.jar中的API。
如下图:
之后我们的工程错误消失了:
为什么不直接使用classes.Jar? 因为我在使用时发现,android.jar中有的东西classes.jar中没有。
相关文章推荐
- 【Android开发学习45】使用google语音识别引擎(Google Speech API)<一>
- <Android 开源库> GreenDAO 使用方法具体解释<译文>
- Android 新API 之 MediaCodec使用笔记 <一>
- 我的Android进阶之旅------>Android中android:windowSoftInputMode的使用方法
- 在AndroidManifest.xml文件中<activity>的android:windowSoftInputMode属性使用
- Android-->AndroidManifest.xml 文件 <meta-data> 使用方法
- 【Android基础 007】 <meta-data>使用方法
- Android使用SharedPreferences保存HashSet<String>数据不能更新成功
- 从零开始学android<日期选择器:DatePicker的使用.十二.>
- <Android>Application全局变量的使用
- CMake 使用方法 & CMakeList.txt<转>
- 使用struts2的<s:param>等标签向action传值出现中文乱码的解决方法
- <Android>使用缓冲区实时写入文件一
- Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(二)
- Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(一)
- <转>Android2.2 API 中文文档系列(9) —— ZoomButton
- android之存储篇_SQLite数据库_让你彻底学会SQLite的使用<转载>
- JSONP一种使用<script>元素获取数据的方法
- Android中<meta-data>的使用
- <s:iterator> 中的status 使用方法