zoukankan      html  css  js  c++  java
  • android 源码编译及其运行模拟器相关问题记录

        最近一直在看android源码相关的文档,包括编译源码,还有framework层的代码,本人很懒,一直没有写博客,今天想自己在编译一下源码,并且运行在模拟器中。

        源码的版本不同,需要的jdk可能也有所不同,一切都参照官方给与的文档,下载源码的方法也参考官方文档。

        注意点:1.环境变量要设置正确,不要出现错误

                   2.基本没有一次就能顺利编译源码的,多少都会出错,根据提示修改错误,安装一些包和库就可以搞定,具体问题具体查找,我遇到的问题也可多了,都是按官方文档解决的。有些问题可能和你的编译环境相关,这里不一一介绍了。

       这里把我的环境变量设置一口气发出来:

        执行命令 gedit ~/.bashrc  打开配置文件后,加入以下内容

    export ANDROID_HOME=/home/cai/candy/develop/adt-bundle-linux-x86_64-20131030/sdk

    export PATH=$PATH:$ANDROID_HOME/platform-tools

    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export PATH=$PATH:$JAVA_HOME/bin

        作为参考就可以,我编译的源码是4.3,如果你编译最新的4.4估计需要jdk是版本为7。

        下载源码后,编译源码,仍然按照官方文档,执行

        source build/envsetup.sh 

        lunch

        出现一些需要选择的项目

    You're building on Linux

    Lunch menu... pick a combo:
    1. aosp_arm-eng
    2. aosp_x86-eng
    3. aosp_mips-eng
    4. vbox_x86-eng
    5. aosp_flo-userdebug
    6. full_grouper-userdebug
    7. full_tilapia-userdebug
    8. mini_armv7a_neon-userdebug
    9. mini_mips-userdebug
    10. mini_x86-userdebug
    11. full_mako-userdebug
    12. full_maguro-userdebug
    13. full_manta-userdebug
    14. full_arndale-userdebug
    15. full_toroplus-userdebug
    16. full_toro-userdebug
    17. full_panda-userdebug

    我这里选择的1,aosp_arm-eng

    我主要是在模拟器中完成,所以aosp就可以了。

    最后make -j4

    编译出错大致都是和少一些库有关,根据提示安装相关的库就可以。

    编译完成后,我们就可以使用android模拟器emulator运行编译出来的源码,编译完成会生成相应的system.img,userdata.img,ramdisk.img都在~/android4.3/out/target/product/generic下面可以看到,因此我们需要添加环境变量

    export ANDROID_PRODUCT_OUT=~/android4.3/out/target/product/generic

    export ANDROID_PRODUCT_OUT_BIN=~/android4.3/out/host/linux-x86/bin

    export PATH=$PATH:$ANDROID_PRODUCT_OUT_BIN:$ANDROID_PRODUCT_OUT

    最后只要执行emulator就可以启动模拟器了

    但是,重新启动一个命令终端,执行emulator就会出现以下错误

    emulator: ERROR: You did not specify a virtual device name, and the system
    directory could not be found.

    不知道大家遇到过没,于是我查了一些资料,发现在环境变量里添加以下源码路径就好了

    export ANDROID_BUILD_TOP=~/android4.3

    可能是和版本有关系,目前解决方法设置ANDROID_BUILD_TOP环境变量

    emulatro -skin WSVGA

    之后就可以修改framework源码,然后在模拟器中查看效果。

  • 相关阅读:
    leetcode—Swap Nodes in Pairs
    leetcode--Merge k Sorted Lists
    leetcode—Valid Parentheses
    leetcode—3sum
    编程工具(保持更新)
    QT下调用摄像头(opencv2.4.4)
    qtcreator 与 opencv
    在线公式编辑器
    QT学习(对话框)codeblock版本
    QT-opencv小结
  • 原文地址:https://www.cnblogs.com/candycaicai/p/3868080.html
Copyright © 2011-2022 走看看