android2.3源码里单独导入单个系统应用模块的方法

   对于从android的源码网上下载下源码的朋友,非常期待查看源码的具体结构或特定的应用的具体实现,下面就教大家如何把系统应用导入到eclipse里开发。

   一:  开发前的准备工作:1.配置Linux环境和编译源码的一些工具,确保编译成功,启动模拟器检验。

                             2.把编译完的整个工程复制到windows系统特定目录里。

  二: 以系统应用Settings为例:

    导入过程:

         1.创建android工程     

            系统的应用都在  源码/packages/apps/下

            在eclipse里:(file->new android->create project from existing source.给工程命令,选择工程所在目录,选择build target)选择你需要的应用,选择特定SDK版本 :

         2.加载所需要的jar包

             因为单独拿出来的系统应用,缺少特定jar包的支持,需要创建libraries,把需要的jar加载进去即可。具体需要哪些jar包,可以再工程错误里查看少那些类或接口,借助Souce Insight工具,查找类或接口所在的位置,筛选路径 /out/target/.......

             在eclipse创建libraries的过程:

                      1.进入project->property->java build path->libraries,选择Add library->user library->new,建立一个独立的库文件集,可命名为android-framework(名字无所谓)。

                      2.建立成功后选择android-framework,然后点Add jars,添加模块需要的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         

                    3.另外还要根据实际项目情况添加其他jar文件        

                    4.记得把创建的libraries顺序放在最前面。

                         工程->Build Path->Configure Build path ->Order and Export 选择新建的jar,点击up键,把它升到最上面。

         3.修改包名  

                       必须修改app项目中所有包的名字,如com.android.settings必须都改为com.lyg.settings(包名顺便起),因为这样才能避免最后生成的apk与系统默认的setting冲突。修改方法如下:

              选择对应的包,如com.android.settings,按F2出现修改对话框,勾选全部选项,修改完成后点preview。

                     需要注意的地方:         

                     1.修改工程名后,AndroidMainfese.xml修改不很成功,最好备份一份原来的 AndroidMainfest.xml文件
                     2.gen下面的资源包名已经变了,由于类里的资源文件还是以前的,所以再在资源文件这里把包名改回去,在改到你修改的名字例如你把包名 com.android.settings 修改成 com.lyg.settings
                        由于以前的资源文件是 com.android.settings.R 所以它没有变。而gen下的资源包名已经改变,先把它修改为com.android.setting,在改回到com.lyg.settings即可

         4.其它操作

                需要注释掉进程的访问权限,如果光有声明,而没有具体的实现该权限,apk是安装不上的,暂时注释掉,会有一些功能受到影响。解决办法需要数子签名,详见数字签名介绍。

                 <!--  android:sharedUserId="android.uid.system" -->

                此时运行即可,对应没有权限的加上,出现别的简单的错误,自己上网查找解决。最后运行该工程,就可以修改和实现系统应用了。

说明:android的4.0源码和android的2.3的源码还是有区别的,用上面方法也是可以的,注意的是:android的2.3源码可以和eclipse的工作空间在同一个目录里,但android的4.0就不可,不然会报错: [2012-03-19 14:38:12 - Setting] AndroidManifest.xml file missing!