1.  新建 android 项目

拷贝源码/packages/apps/Settings到你的其它目录。

在eclipse中,新建项目,但是要从exitting source选择:

2. 导入相关的库文件

希望你这样做,否则你会遇到其它莫名奇妙的错误。

eclipse中右键项目Settings/Build Path/Add Libray

选择User Libray,选择new ,任意去一个名称。

注意:一定要选择System libray前面的复选框。

点击ok之后,选择对应的jar包。

该 jar包就是源码目录/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/下面的包。

注意这步操作:

eclipse中右键项目Settings/Build Path/Configure Build Path/,开始你会看到是下面这个样子:

然后,调整一下顺序如下:

大概需要这些包:

加载所需要的jar包

  (需要改下名字)

  out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

  out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar

  out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar

  out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/classes.jar

  out/target/common/obj/JAVA_LIBRARIES/frameworks-core-util-lib_intermediates/classes.jar

  out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar

这些jar包就是源码目录/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/下面的包。

有可能还需要guava.jar:  这个包的代码可以读一下,它是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。

3. 再次编译

在eclipse中clean,即可。

另外,当你安装的时候可能会和android自带的app冲突,你可以改下包名来避免冲突,选中一个包,按F2(下图,我选中了com.android.settings 改为了com.zheng.settings,子包自动改掉了)。

注意:你可以将 源码目录/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 这个文件放到你的Settings项目中。


例如在Settings中新建目录libs,然后将classes.jar放到里面,然后,照着上面2的步骤重新做一次即可!

导入其它源码,有可能需要/out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/下面的jar文件。类似手法导入即可。

另外,如果在eclipse里不能直接运行,可以将改动用diff工具加入到android的源码中进行编译(模块编译),编译好了的目标apk文件包含多种情况,具体如下:

安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法

在android4.0源码里面编译出来apk后,用adb install (或adb install -r 重装)安装时,报错[INSTALL_FAILED_DEXOPT]。

xu@xu-PC:~$ adb install workspace/out/target/product/generic/system/app/xxx.apk
2820 KB/s (225970 bytes in 0.078s)
    pkg: /data/local/tmp/xxx.apk
Failure [INSTALL_FAILED_DEXOPT]
或者

xu@xu-PC:~$ adb install -r workspace/out/target/product/generic/system/app/xxx.apk
2768 KB/s (225970 bytes in 0.079s)
    pkg: /data/local/tmp/xxx.apk
Failure [INSTALL_FAILED_DEXOPT]

这是因为在system\app下面的apk是经过优化的,而dex文件不会打包到apk中,dex文件会被优化后,生成odex文件。

下面就是程序经编译之后,在workspace/out/target/product/generic/system/app/下生成的.odex和.apk两个文件

Install: out/target/product/generic/system/app/xxx.odex
Install: out/target/product/generic/system/app/xxx.apk

这样安装apk时,就会缺少dex文件,导致报错[INSTALL_FAILED_DEXOPT]。

-->解决办法:

找到未优化过的apk,即在out/target/product/generic/obj/APPS/下找到对应的APP:

xu@xu-PC:~$ adb install workspace/out/target/product/generic/obj/APPS/xxx_intermediates/package.apk.unaligned
2400 KB/s (331697 bytes in 0.134s)
    pkg: /data/local/tmp/package.apk.unaligned
Success
xu@xu-PC:~$

如果已经安装了该程序,可以重装一下:

xu@xu-PC:~$ adb install -r workspace/out/target/product/generic/obj/APPS/xxx_intermediates/package.apk.unaligned
2873 KB/s (331689 bytes in 0.112s)
    pkg: /data/local/tmp/package.apk.unaligned
Success

将android Settings 源码 导入到 eclipse工程的更多相关文章

  1. 怎样将Android SDK源码 导入到Eclipse中?

    在Eclipse中导入android sdk源码 http://blog.csdn.net/hahahacff/article/details/8590649

  2. Android系统源码导入到eclipse

    1.把eclipse工程配置文件复制到android源码根目录下      cp development/ide/eclipse/.classpath ./  2. 在android源码根目录下新建文 ...

  3. 将Android系统源码导入Android studio的方法

    Android源码目录结构如下: |-- Makefile|-- abi (applicationbinary interface,应用程序二进制接口,生成libgabi++.so相关库文件)|-- ...

  4. 如何将spring源码导入到eclipse中

    如何将spring源码导入到eclipse中 1. 下载spring源码  可以在github官网中找到spring源码来下载,或者直接通过git下载,是一样的,这里演示 直接在github网站下载, ...

  5. (转)把hadoop源码关联到eclipse工程

    把hadoop源码关联到eclipse工程     转:http://www.superwu.cn/2013/08/04/355 在eclipse中阅读源码非常方便,利于我们平时的学习,下面讲述如何把 ...

  6. 将Android系统源码导入ecplise

    Android系统源码中带有个IDE的配置文件,目录为:development/ide/ 如果要用eclipse导入查看系统源码,则将development/ide/eclipse/.classpat ...

  7. 将spring源码导入到eclipse中

    前置条件: 1. 正确安装jdk,并配置好JAVA_HOME.PATH.(我这里安装的是jdk1.8) 2. 正确安装好eclipse.(我的eclipse版本是: Neon Release (4.6 ...

  8. kafka源码导入idea/eclipse

    先进入源码工程:执行gradle idea或者gradle eclipse 之后再导入idea/eclipse

  9. Zookeeper源码编译为Eclipse工程(转)

    原文地址:http://blog.csdn.net/jiyiqinlovexx/article/details/41179293 为了深入学习ZooKeeper源码,首先就想到将其导入到Eclispe ...

随机推荐

  1. C#实现Comparable接口实现排序

    C#中,实现排序的方法有两种,即实现Comparable或Comparer接口,下面简单介绍实现Comparable接口实现排序功能. 实现Comparable接口需要实现CompareTo(obje ...

  2. ggplot2 demo

    title <- rep("A Really Rather Long Text Label", 25)value <- runif(25, 1,10)spacing & ...

  3. UVa 1515 (最小割) Pool construction

    题意: 输入一个字符矩阵,'.'代表洞,'#'代表草地.可以把草改成洞花费为d,或者把洞改成草花费为f,最后还要在草和洞之间修围栏花费为b. 但要保证最外一圈是草,求最小费用. 分析: 还不是特别理解 ...

  4. CodeForces Round #278 (Div.2) (待续)

    A 这么简单的题直接贴代码好了. #include <cstdio> #include <cmath> using namespace std; bool islucky(in ...

  5. UVA 1659 Help Little Laura 帮助小劳拉 (最小费用流,最小循环流)

    (同时也是HDU 2982,UVA的数据多) 题意:平面上有m条有向线段连接了n个点.你从某个点出发顺着有向线段行走,给走过的每条线段涂一种不同的颜色,最后回到起点.你可以多次行走,给多个回路涂色(要 ...

  6. 【C#学习笔记】smtp发邮件

    using System; using System.Net; using System.Net.Mail; using System.Text; namespace ConsoleApplicati ...

  7. 安装服务Memcached+Nginx+Php linux下安装

    Memcached安装 1.      源码安装libevent(下载地址:http://monkey.org/~provos/libevent/) 2.      源码安装memcached(下载地 ...

  8. 【Java】List的三种遍历方法

    public void List_Test(){ List<String>list = new ArrayList<String>(); for(int i = 0;i < ...

  9. db file scattered read 等待事件

    db file scattered read 等待事件: 我们经常会见到db file scattered read  等待事件,在生产环境中,这个等待事件可能更为常见.这个事件表明用户进程正在读数据 ...

  10. 【转】android Apk打包过程概述_android是如何打包apk的

    最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程.   流程概述: 1.打包资源文件,生成 ...