在eclipse的android工程里引用android sdk之外的类和方法
2011年10月18日
我们经常会遇到这样的问题:
我们想在eclipse里的android工程中使用存在于android开源代码中的某个类,但是这个类却不包含在android sdk中。
怎么办呢?难道我们的开发就要限制于sdk公开的类中?答案肯定是否定的,聪明的鱼告诉你一个解决办法:
1、首先准备好你要使用的类,例如:我使用想ServiceManager类。我做了以下准备工作:
a、make android 源码
b、查找与ServiceManager有关的class文件 find -name ServiceManager*.class
c、我找到了ServiceManager.class文件(这里要注意,和ServiceManager相关的内部类也要包括进来,由于ServiceManager没有内部类,因此就只有ServiceManager.class这一个文件)。
2、找到你的android工程使用的sdk platform。
a、为什么要找呢?因为我们要找到android.jar这个文件,这个文件和你工程的编译相关,很多类都是在这个文件里找到的。
b、怎么找呢?查看你工程的属性->Java Build Path->Libraries,这里我看到的是Android 2.3.3,展开,就看到android.jar的路径了。这个文件实际上都是在“你的android sdk路径/platforms/你的工程所属的api level文件夹”下,很好找的。
3、添加我们准备好的类到android.jar里面。
a、用WinRAR打开android.jar文件。相信这个软件很多人都有吧。
b、打开对应的目录,将你的类添加进去。我的ServiceManager应该添加到Android/os/文件夹下,于是我在WinRAR中打开这个文件夹,把ServiceManager.class文件托进去,此时弹出一个WinRAR压缩设置的对话框,这里要特别注意, 我们应该设置压缩方式为“存储”,然后点击确定,ServiceManager.class就添加进去了。
做完以上工作以后,重启你的eclipse,然后就可以使用这个类了。
链接地址: http://edu.gamfe.com/tutor/d/35768.html
在Android源码中,某些方法,成员,类或包(通过package.html文件)被打上@hide标签,这些类、方法或成员在SDK中没有公 开,比如类android.app.ActivityThread,类android.text.method.Touch的 getMaxScrollX()方法,类android.view.View的成员mScrollX等。因此在使用这些类时会提示类或成员不能被解决。下 面提供一种方法解决这个问题。
首先,下载Android源码进行编译。然后在编译后的out目录下寻找包含你所用隐藏类的模块的jar文件,通常文件名为 classes.jar。比如framework的jar文件为out argetcommonobjJAVA_LIBRARIESframework_intermediatesclasses.jar。最后在 eclipse的Android项目中,选择项目属性->Java Build Path->Libraries->Add Library->User Library->Next-> User Libraries进入到User Libraries管理界面,点击New新建一个User Library,比如android_framework,点击Add Jars把Jar包加入到建立的User Library中,最后点击OK就可以了。为了访问因此成员,需要改变类搜索顺序,选择项目属性->Java Build Path->Order and Export,把所建立的User Libraries移到Android SDK的上面。
连接地址 http://yueguc.iteye.com/blog/805482
来自 www.iteye.com
2011年10月18日
我们经常会遇到这样的问题:
我们想在eclipse里的android工程中使用存在于android开源代码中的某个类,但是这个类却不包含在android sdk中。
怎么办呢?难道我们的开发就要限制于sdk公开的类中?答案肯定是否定的,聪明的鱼告诉你一个解决办法:
1、首先准备好你要使用的类,例如:我使用想ServiceManager类。我做了以下准备工作:
a、make android 源码
b、查找与ServiceManager有关的class文件 find -name ServiceManager*.class
c、我找到了ServiceManager.class文件(这里要注意,和ServiceManager相关的内部类也要包括进来,由于ServiceManager没有内部类,因此就只有ServiceManager.class这一个文件)。
2、找到你的android工程使用的sdk platform。
a、为什么要找呢?因为我们要找到android.jar这个文件,这个文件和你工程的编译相关,很多类都是在这个文件里找到的。
b、怎么找呢?查看你工程的属性->Java Build Path->Libraries,这里我看到的是Android 2.3.3,展开,就看到android.jar的路径了。这个文件实际上都是在“你的android sdk路径/platforms/你的工程所属的api level文件夹”下,很好找的。
3、添加我们准备好的类到android.jar里面。
a、用WinRAR打开android.jar文件。相信这个软件很多人都有吧。
b、打开对应的目录,将你的类添加进去。我的ServiceManager应该添加到Android/os/文件夹下,于是我在WinRAR中打开这个文件夹,把ServiceManager.class文件托进去,此时弹出一个WinRAR压缩设置的对话框,这里要特别注意, 我们应该设置压缩方式为“存储”,然后点击确定,ServiceManager.class就添加进去了。
做完以上工作以后,重启你的eclipse,然后就可以使用这个类了。
链接地址: http://edu.gamfe.com/tutor/d/35768.html
在Android源码中,某些方法,成员,类或包(通过package.html文件)被打上@hide标签,这些类、方法或成员在SDK中没有公 开,比如类android.app.ActivityThread,类android.text.method.Touch的 getMaxScrollX()方法,类android.view.View的成员mScrollX等。因此在使用这些类时会提示类或成员不能被解决。下 面提供一种方法解决这个问题。
首先,下载Android源码进行编译。然后在编译后的out目录下寻找包含你所用隐藏类的模块的jar文件,通常文件名为 classes.jar。比如framework的jar文件为out argetcommonobjJAVA_LIBRARIESframework_intermediatesclasses.jar。最后在 eclipse的Android项目中,选择项目属性->Java Build Path->Libraries->Add Library->User Library->Next-> User Libraries进入到User Libraries管理界面,点击New新建一个User Library,比如android_framework,点击Add Jars把Jar包加入到建立的User Library中,最后点击OK就可以了。为了访问因此成员,需要改变类搜索顺序,选择项目属性->Java Build Path->Order and Export,把所建立的User Libraries移到Android SDK的上面。
连接地址 http://yueguc.iteye.com/blog/805482
来自 www.iteye.com