<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
    主站蜘蛛池模板: 黄视频在线观看免费| 日韩精品久久久久久免费| 区久久AAA片69亚洲| 中文字幕视频免费| 另类小说亚洲色图| 亚洲高清在线视频| 永久免费毛片手机版在线看| 国产久爱免费精品视频| 亚洲免费视频播放| 亚洲中文字幕无码久久精品1 | 亚洲国产一区在线观看| 亚洲AV无码乱码在线观看牲色| 性色午夜视频免费男人的天堂| 久久亚洲中文无码咪咪爱| 亚洲图片在线观看| 亚洲国产成人五月综合网 | 亚洲精品成人片在线观看| 久久久久av无码免费网| www免费黄色网| 亚洲乱人伦精品图片| 亚洲av无码专区在线观看素人| 麻豆视频免费观看| 中文字幕免费人成乱码中国| 亚洲午夜无码久久久久小说| 无码专区—VA亚洲V天堂| 亚洲免费日韩无码系列| 在线观看人成视频免费| 久久免费看黄a级毛片| a在线观看免费网址大全| 国产成人综合亚洲一区| 亚洲一区电影在线观看| 亚洲AV午夜福利精品一区二区| 免费看一级做a爰片久久| 在线观看人成视频免费| 亚欧人成精品免费观看| 成人爽a毛片免费| 亚洲免费无码在线| 美女裸体无遮挡免费视频网站| 亚洲午夜成人精品无码色欲| 亚洲男女性高爱潮网站| 亚洲一区二区三区日本久久九|