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. 转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程

    本文是一篇在Myeclipse下构建Java Web项目的初级教程.图文并茂,非常详细.所用的Myeclipse版本是7.5. 第一步:新建Web Project,如下图. 第二步,在弹出的窗口填写下 ...

  2. linux scp

    scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp ...

  3. OAuth2.0和SSO授权的区别

    OAuth2.0和SSO授权   一.OAuth2.0授权协议 一种安全的登陆协议,用户提交的账户密码不提交到本APP,而是提交到授权服务器,待服务器确认后,返回本APP一个访问令牌,本APP即可用该 ...

  4. lightOJ 1132 Summing up Powers(矩阵 二分)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意:给出n和m.求sum(i^m)%2^32.(1<=i<=n) ...

  5. Windows下tuxedo配置

    setenv.cmd rem (c) 2003 BEA Systems, Inc. All Rights Reserved. rem Copyright (c) 2000 BEA Systems, I ...

  6. git push default

    今天使用git push的时候出现了如下提示: warning: push.default is unset; its implicit value is changing in Git 2.0 fr ...

  7. 我的MYSQL学习心得

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. sql server 数据库 ' ' 附近有语法错误

    昨天做项目时候,遇到标题的问题,代码跟踪把sql 语句 复制出来在数据库执行不了, 然后重新写个一模一样的,然后在 赋值到代码中,还是同样的错误, 就是不知道哪里出现了错误,最后 把 sql 语句写成 ...

  9. 全球最受欢迎的十大Linux发行版(图)

    帮助新的Linux用户在越来越多的Linux发行版中选择最合适的操作系统,是创建这个网页的原因.它列出了迄今为止最流行的10个Linux发行版(另外增加的是FreeBSD,到目前为止最为流行的BSD系 ...

  10. angular js 实例参数学习

    <!DOCTYPE html> <html> <head> <meta name="description" content=" ...