• 将android Settings 源码 导入到 eclipse工程


    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]

    这是因为在systemapp下面的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

  • 相关阅读:
    21 viewPager--- hzScrollView ----llContainer
    21 ViewPager RadioGroup
    CLEAR REFRESH FEEE的区别
    在ALV中更新数据库表
    cl_gui_cfw=>flush
    cl_gui_cfw=>dispatch
    数据库表-DD01L DD02L DD03L-保存数据表和域的消息
    SAP 锁机制
    ABAP 搜索帮助
    SAP Basis常用事务代码
  • 原文地址:https://www.cnblogs.com/welhzh/p/5555781.html
Copyright © 2020-2023  润新知