<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    Building, running, and debugging Android source


    There is a lot of confusion surrounding the work flow in the Android source tree, so allow me to simplify:

    1. Follow the initial instructions for downloading the source at:

      http://source.android.com/download

    2. Set up your environment to build the engineering build for the generic device and generic product. This is similar to the SDK, but with a few pieces missing.

      $ source build/envsetup.sh
      $ lunch 1
    3. To build for the first time:

      $ make

      If you have a multi-core system, you can build with make -jN where N is twice the number of cores on your machine. This should speed up the first build considerably.

    4. To launch the emulator from your build:

      $ ./out/host/<your-machine-type>/bin/emulator

      On my system <your-machine-type> is linux-x86.

      NOTE: The emulator knows where to find system and data images as a result of running lunch 1 above. This sets the environment variable ANDROID_PRODUCT_OUT to point to the target directory. For this example, it should be out/target/product/generic/.

    5. If you wish to make changes to the source code, there are handy utilities that have been exposed to your environment by source build/envsetup.sh above. For example, if you modify the Email app and just want to rebuild it:

      $ mmm packages/apps/Email

    6. To see your changes in the emulator you can run:

      $ adb remount
      $ adb sync

      Which will copy the regenerated Email.apk file into the emulator’s /system/app folder, triggering the PackageManager to automatically reinstall it.

    7. Or if you change framework resources in frameworks/base/core/res/res/ you could regenerate framework-res.apk with:

      $ mmm frameworks/base/core/res

      Or if you modified even the framework itself you could run:

      $ ONE_SHOT_MAKEFILE="frameworks/base/Android.mk" make framework

      This is a special variation of mmm which is used to build frameworks/base/core/java.

      To sync these changes you must restart the running framework and sync, as with this handy sequence:

      $ adb remount
      $ adb shell stop
      $ adb sync
      $ adb shell start

    8. Finally, to debug your changes you can use the DDMS tool to select a process for debug and then attach Eclipse to it. If you have the Eclipse Android Development plugin installed, there is a special DDMS perspective which you can use to choose the process for debug. To attach Eclipse to it, see these instructions:

      http://source.android.com/using-eclipse

      This document also describes how to use Eclipse for development. Any IDE should work with the proper finagling though. Just note that the IDE won’t really by an integrated environment, the final output of APKs, system.img, and even the generation of R.java files will have to be done by make!

      A note about the processes in Android:

      • system_process houses all things under frameworks/base/services. This includes the PackageManagerService, StatusBarService, etc. It has many, many threads (one for each service, and then one main UI thread), so be wary when debugging.
      • com.android.acore hosts Launcher (home), Contacts, etc. You can determine the apps/providers that run here by looking forandroid:process="android.process.acore" in the various AndroidManifest.xml files in packages/.

      Also remember that the “framework” (under frameworks/base/core/java) is not hosted by any one process. It is a library used by most processes, so to debug code there you can usually use a simple demo app that takes advantage of whatever you changed and debug that app’s process. A useful trick for setting up your debug connection is to callDebug.waitForDebugger() during some startup part of an application or system service.

     原文地址 http://planetandroid.vitaeblog.com/?p=749
    posted on 2010-10-17 14:05 calvin 閱讀(293) 評論(0)  編輯  收藏 所屬分類: Android
    主站蜘蛛池模板: 国产一二三四区乱码免费| 日韩精品免费一区二区三区| 久久国产乱子伦精品免费看| 午夜视频在线免费观看| 免费毛片a线观看| 99久久这里只精品国产免费| 在线观看成人免费| 国产亚洲老熟女视频| 亚洲国产美国国产综合一区二区 | 亚洲色爱图小说专区| 久久精品国产亚洲AV网站| 亚洲一区二区三区丝袜| eeuss影院ss奇兵免费com| 久久午夜伦鲁片免费无码| 日韩成人免费aa在线看| 久久精品国产亚洲av四虎| 亚洲精品无码中文久久字幕| 久久青草91免费观看| 免费a级毛片18以上观看精品| 亚洲av网址在线观看| 免费人成视频在线播放| 操美女视频免费网站| 精品国产综合成人亚洲区| 亚洲av永久无码天堂网| 最近中文字幕免费mv在线视频| 亚洲午夜av影院| 黄色a级免费网站| 暖暖日本免费在线视频| 亚洲国产情侣一区二区三区| 中文字幕一区二区免费| 亚洲AV无码乱码精品国产| 亚洲熟伦熟女专区hd高清| 日本黄网站动漫视频免费| 国产av无码专区亚洲av桃花庵| 精品亚洲福利一区二区| 性色av免费观看| 色天使亚洲综合一区二区| 精品国产麻豆免费网站| 在线观看亚洲视频| 四虎精品亚洲一区二区三区| 美女裸免费观看网站|