现在的位置: 首页 > 综合 > 正文

将系统自带的Launcher2源码导入eclipse中编译运行

2013年09月08日 ⁄ 综合 ⁄ 共 1798字 ⁄ 字号 评论关闭

 http://blog.csdn.net/wzcqr0501/article/details/6931453

 

 

注意事项: 右键工程->build path->add Library->user Library->user Libraries->new->随便取个名字->add JARs->ok

systemLibrary选中

 

 

1.将Launcher2项目导入eclipse中
这时候Launcher2工程已经导入到eclipse中了,不过这时候会有100多个错误.

2.添加Launcher2使用的包文件。

由于在Android源码中,很多方法、成员、类、包都被打上@hide标签,这些成员在SDK中没有公开,以至于在编译Launcher源码时最常遇到的类android.view.View的成员mScrollX无法访问。因此首先需要下载Android的代码并且编译好,因为要用到一些编译完成的class.jar文件

这里我们用到的有:(生成的包的路径为out/target/common/obj/JAVA_LIBRARIES)
1)framework_intermediates/classes.jar :这个主要是android的框架类
2)android-common_intermediates/classes.jar :这个包含com.android.common.Search这个类
3)core_intermediates/classes.jar :这个包包含dalvik.system.VMRuntime这个类

这些都是需要导入到工程里面的包,这个可以通过配置工程的Build Path来加入,
右键工程名称然后选择Build Path->Configure Build Path...->Libraries->Add Library->User Library->User Libraries...->New...
然后将上面3个依赖的包一个个的加入进来,分别命名为android_framework,android_common,android_core.
将3个包加入进来后,然后还需要将它们放到android2.3.3这个包的前面,可以在Build Path配置中选择Order and Export
这时出现 unable to execute dex:java heap space 的错误,Eclipse基本上卡死。
解决方法:导入工程的jar通过 add User Library方式导入
       右键工程->build path->add Library->user Library->user Libraries->new->随便取个名字->add JARs->ok
       添加过程中记得将 user   systemLibrary选中

3.修改Launcher2  package名称,这是由于package是同一个com.android.launcher但数字签名却不一样,系统会拒绝安装

改掉原始包的名字,切记使用eclipse的重命名机制(在包名上按F2可修改),不仅是类的引用,还有很多xml文件内部的引用(如import com.android.launcher3.R;),只要重命名不错,这些都可以一次性搞定的。

New name填写你自己的包名,把下面四项全部勾选。点击“Preview”

特别注意:你的项目最好不要放在中文路径下,不然rename时会出错,我就是开始放在中文路径下出错弄了很久才发现错误!

在package更改后会编译出错,问题在res中的几个出现 xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"的地方,将最后那个“com.android.launcher”改成与更改后的package名一致就可以了。

4.AndroidManifest.xml文件里面,找到这句话删除掉。(android:sharedUserId="android.uid.shared")

最后,安装到模拟器运行时,出现Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER解决办法:

将AndroidManifest.xml里<provider>定义中的
android:authorities的值修改为别的就可以了。

 

抱歉!评论已关闭.