将android Settings 源码 导入到 eclipse工程

时间:2022-10-28 14:19:30

1.  新建 android 项目

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

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

将android Settings 源码 导入到 eclipse工程

2. 导入相关的库文件

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

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

将android Settings 源码 导入到 eclipse工程

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

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

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

将android Settings 源码 导入到 eclipse工程

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

将android Settings 源码 导入到 eclipse工程

注意这步操作:

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

将android Settings 源码 导入到 eclipse工程

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

将android Settings 源码 导入到 eclipse工程

大概需要这些包:

将android Settings 源码 导入到 eclipse工程

加载所需要的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