From 3cd199f9a6c97ddbfbf60afbf1449dac3f8cd95e Mon Sep 17 00:00:00 2001 From: Dan Morrill Date: Fri, 6 Nov 2009 14:04:16 -0800 Subject: [PATCH] Work-in-progress snapshot of the source.android.com (formerly PDK) site refresh. --- pdk/Pdk.mk | 14 +- pdk/docs/about/about_toc.cs | 18 + pdk/docs/about/index.jd | 20 + pdk/docs/about/philosophy.jd | 80 +++ pdk/docs/community/community_toc.cs | 24 + pdk/docs/community/groups-charter.jd | 50 ++ pdk/docs/community/index.jd | 124 +++- pdk/docs/compatibility/compatibility_toc.cs | 26 +- pdk/docs/compatibility/contact-us.jd | 28 + pdk/docs/compatibility/cts-intro.jd | 98 +++ pdk/docs/compatibility/faq.jd | 124 ++++ pdk/docs/compatibility/index.jd | 61 +- pdk/docs/compatibility/overview.jd | 88 +++ pdk/docs/downloads/downloads_toc.cs | 21 + pdk/docs/downloads/index.jd | 46 ++ pdk/docs/images/bluetooth-0.jpg | Bin 0 -> 31390 bytes pdk/docs/images/cts-0.png | Bin 0 -> 24277 bytes pdk/docs/images/cts-process-0.gif | Bin 0 -> 1712 bytes pdk/docs/images/cts-process-1.png | Bin 0 -> 18338 bytes pdk/docs/images/discuss-0.png | Bin 0 -> 190 bytes pdk/docs/images/documentation-0.png | Bin 0 -> 190 bytes pdk/docs/images/download-0.png | Bin 0 -> 190 bytes pdk/docs/images/git-repo-0.png | Bin 0 -> 190 bytes pdk/docs/images/git-repo-1.png | Bin 0 -> 102306 bytes pdk/docs/images/home-bugdroid.png | Bin 0 -> 5805 bytes pdk/docs/images/how-it-works-0.png | Bin 0 -> 12576 bytes pdk/docs/images/how-it-works-1.png | Bin 0 -> 11169 bytes pdk/docs/images/lil-wrench.png | Bin 0 -> 883 bytes pdk/docs/images/submit-patches-0.png | Bin 0 -> 16149 bytes pdk/docs/images/submit-patches-1.png | Bin 0 -> 17402 bytes pdk/docs/images/workflow-0.png | Bin 0 -> 130449 bytes pdk/docs/index.jd | 155 ++--- pdk/docs/porting/audio.jd | 61 ++ pdk/docs/porting/bluetooth.jd | 193 ++++++ .../porting/bluetooth/bluetooth_process.jd | 7 + .../images/androidBluetoothProcessDiagram.jpg | Bin 0 -> 178909 bytes pdk/docs/porting/bring_up.jd | 359 +++++++++++ pdk/docs/porting/build_cookbook.jd | 556 ++++++++++++++++++ pdk/docs/porting/build_new_device.jd | 242 ++++++++ pdk/docs/porting/build_system.jd | 270 +++++++++ pdk/docs/porting/camera.jd | 76 +++ pdk/docs/porting/customization.jd | 321 ++++++++++ pdk/docs/porting/dalvik.jd | 355 +++++++++++ pdk/docs/porting/debugging_gdb.jd | 146 +++++ pdk/docs/porting/debugging_native.jd | 305 ++++++++++ pdk/docs/porting/display_drivers.jd | 345 +++++++++++ pdk/docs/porting/getting_source_code.jd | 128 ++++ pdk/docs/porting/gps.jd | 60 ++ pdk/docs/porting/group__memory.jd | 24 + pdk/docs/porting/group__networking.jd | 26 + pdk/docs/porting/images/androidBluetooth.gif | Bin 0 -> 21239 bytes .../porting/images/androidPMArchitecture.gif | Bin 0 -> 30087 bytes .../images/android_audio_architecture.gif | Bin 0 -> 28092 bytes pdk/docs/porting/images/cameraPreview.jpg | Bin 0 -> 153086 bytes pdk/docs/porting/images/cameraTakePicture.jpg | Bin 0 -> 169003 bytes pdk/docs/porting/images/camera_video2.gif | Bin 0 -> 37135 bytes pdk/docs/porting/images/customLogo.gif.png | Bin 0 -> 3863 bytes pdk/docs/porting/images/stk.gif | Bin 0 -> 15613 bytes pdk/docs/porting/images/stk_display_text.gif | Bin 0 -> 10194 bytes pdk/docs/porting/images/stk_display_text2.gif | Bin 0 -> 16748 bytes pdk/docs/porting/images/stk_refresh_init.gif | Bin 0 -> 21378 bytes pdk/docs/porting/images/stk_refresh_reset.gif | Bin 0 -> 7711 bytes .../porting/images/stk_refresh_update.gif | Bin 0 -> 10853 bytes pdk/docs/porting/images/stk_send_SMS.gif | Bin 0 -> 8411 bytes pdk/docs/porting/images/telephony.gif | Bin 0 -> 29095 bytes .../images/telephony_solicted_example.gif | Bin 0 -> 18415 bytes .../images/telephony_unsolicted_example.gif | Bin 0 -> 15847 bytes pdk/docs/porting/index.jd | 28 + pdk/docs/porting/instrumentation_framework.jd | 143 +++++ pdk/docs/porting/instrumentation_testing.jd | 494 ++++++++++++++++ pdk/docs/porting/intro_source_code.jd | 171 ++++++ pdk/docs/porting/keymaps_keyboard_input.jd | 504 ++++++++++++++++ pdk/docs/porting/lights.jd | 48 ++ pdk/docs/porting/modules.html | 37 ++ pdk/docs/porting/porting_toc.cs | 92 +++ pdk/docs/porting/power_management.jd | 203 +++++++ pdk/docs/porting/release_keys.jd | 82 +++ pdk/docs/porting/sensors.jd | 67 +++ pdk/docs/porting/source_setup_guide.jd | 118 ++++ pdk/docs/porting/stk.jd | 508 ++++++++++++++++ pdk/docs/porting/system_requirements.jd | 60 ++ pdk/docs/porting/tcpdump.jd | 90 +++ pdk/docs/porting/telephony.jd | 230 ++++++++ pdk/docs/porting/wifi.jd | 51 ++ pdk/docs/source/building-dream.jd | 33 ++ pdk/docs/source/cla-corporate.jd | 53 ++ pdk/docs/source/cla-individual.jd | 46 ++ pdk/docs/source/code-style.jd | 438 ++++++++++++++ pdk/docs/source/documentation.jd | 56 ++ pdk/docs/source/download.jd | 367 ++++++++++++ pdk/docs/source/git-repo.jd | 374 ++++++++++++ pdk/docs/source/index.jd | 33 ++ pdk/docs/source/licenses.jd | 87 +++ pdk/docs/source/life-of-a-bug.jd | 126 ++++ pdk/docs/source/life-of-a-patch.jd | 5 + pdk/docs/source/overview-1.0.jd | 158 +++++ pdk/docs/source/overview-1.5.jd | 196 ++++++ pdk/docs/source/overview.jd | 88 +++ pdk/docs/source/report-bugs.jd | 125 ++++ pdk/docs/source/roles.jd | 83 +++ pdk/docs/source/source_toc.cs | 36 ++ pdk/docs/source/submit-patches.jd | 231 ++++++++ pdk/docs/source/using-eclipse.jd | 211 +++++++ pdk/hosting/app.yaml | 10 +- 104 files changed, 9987 insertions(+), 146 deletions(-) create mode 100644 pdk/docs/about/about_toc.cs create mode 100644 pdk/docs/about/index.jd create mode 100644 pdk/docs/about/philosophy.jd create mode 100644 pdk/docs/community/community_toc.cs create mode 100644 pdk/docs/community/groups-charter.jd create mode 100644 pdk/docs/compatibility/contact-us.jd create mode 100644 pdk/docs/compatibility/cts-intro.jd create mode 100644 pdk/docs/compatibility/faq.jd create mode 100644 pdk/docs/compatibility/overview.jd create mode 100644 pdk/docs/downloads/downloads_toc.cs create mode 100644 pdk/docs/downloads/index.jd create mode 100644 pdk/docs/images/bluetooth-0.jpg create mode 100644 pdk/docs/images/cts-0.png create mode 100644 pdk/docs/images/cts-process-0.gif create mode 100644 pdk/docs/images/cts-process-1.png create mode 100644 pdk/docs/images/discuss-0.png create mode 100644 pdk/docs/images/documentation-0.png create mode 100644 pdk/docs/images/download-0.png create mode 100644 pdk/docs/images/git-repo-0.png create mode 100644 pdk/docs/images/git-repo-1.png create mode 100644 pdk/docs/images/home-bugdroid.png create mode 100644 pdk/docs/images/how-it-works-0.png create mode 100644 pdk/docs/images/how-it-works-1.png create mode 100644 pdk/docs/images/lil-wrench.png create mode 100644 pdk/docs/images/submit-patches-0.png create mode 100644 pdk/docs/images/submit-patches-1.png create mode 100644 pdk/docs/images/workflow-0.png create mode 100755 pdk/docs/porting/audio.jd create mode 100755 pdk/docs/porting/bluetooth.jd create mode 100755 pdk/docs/porting/bluetooth/bluetooth_process.jd create mode 100755 pdk/docs/porting/bluetooth/images/androidBluetoothProcessDiagram.jpg create mode 100755 pdk/docs/porting/bring_up.jd create mode 100755 pdk/docs/porting/build_cookbook.jd create mode 100755 pdk/docs/porting/build_new_device.jd create mode 100755 pdk/docs/porting/build_system.jd create mode 100755 pdk/docs/porting/camera.jd create mode 100755 pdk/docs/porting/customization.jd create mode 100755 pdk/docs/porting/dalvik.jd create mode 100755 pdk/docs/porting/debugging_gdb.jd create mode 100755 pdk/docs/porting/debugging_native.jd create mode 100755 pdk/docs/porting/display_drivers.jd create mode 100755 pdk/docs/porting/getting_source_code.jd create mode 100755 pdk/docs/porting/gps.jd create mode 100755 pdk/docs/porting/group__memory.jd create mode 100755 pdk/docs/porting/group__networking.jd create mode 100755 pdk/docs/porting/images/androidBluetooth.gif create mode 100755 pdk/docs/porting/images/androidPMArchitecture.gif create mode 100755 pdk/docs/porting/images/android_audio_architecture.gif create mode 100755 pdk/docs/porting/images/cameraPreview.jpg create mode 100755 pdk/docs/porting/images/cameraTakePicture.jpg create mode 100755 pdk/docs/porting/images/camera_video2.gif create mode 100755 pdk/docs/porting/images/customLogo.gif.png create mode 100755 pdk/docs/porting/images/stk.gif create mode 100755 pdk/docs/porting/images/stk_display_text.gif create mode 100755 pdk/docs/porting/images/stk_display_text2.gif create mode 100755 pdk/docs/porting/images/stk_refresh_init.gif create mode 100755 pdk/docs/porting/images/stk_refresh_reset.gif create mode 100755 pdk/docs/porting/images/stk_refresh_update.gif create mode 100755 pdk/docs/porting/images/stk_send_SMS.gif create mode 100755 pdk/docs/porting/images/telephony.gif create mode 100755 pdk/docs/porting/images/telephony_solicted_example.gif create mode 100755 pdk/docs/porting/images/telephony_unsolicted_example.gif create mode 100644 pdk/docs/porting/index.jd create mode 100755 pdk/docs/porting/instrumentation_framework.jd create mode 100755 pdk/docs/porting/instrumentation_testing.jd create mode 100755 pdk/docs/porting/intro_source_code.jd create mode 100755 pdk/docs/porting/keymaps_keyboard_input.jd create mode 100755 pdk/docs/porting/lights.jd create mode 100755 pdk/docs/porting/modules.html create mode 100644 pdk/docs/porting/porting_toc.cs create mode 100755 pdk/docs/porting/power_management.jd create mode 100755 pdk/docs/porting/release_keys.jd create mode 100755 pdk/docs/porting/sensors.jd create mode 100755 pdk/docs/porting/source_setup_guide.jd create mode 100755 pdk/docs/porting/stk.jd create mode 100755 pdk/docs/porting/system_requirements.jd create mode 100755 pdk/docs/porting/tcpdump.jd create mode 100755 pdk/docs/porting/telephony.jd create mode 100755 pdk/docs/porting/wifi.jd create mode 100644 pdk/docs/source/building-dream.jd create mode 100644 pdk/docs/source/cla-corporate.jd create mode 100644 pdk/docs/source/cla-individual.jd create mode 100644 pdk/docs/source/code-style.jd create mode 100644 pdk/docs/source/documentation.jd create mode 100644 pdk/docs/source/download.jd create mode 100644 pdk/docs/source/git-repo.jd create mode 100644 pdk/docs/source/index.jd create mode 100644 pdk/docs/source/licenses.jd create mode 100644 pdk/docs/source/life-of-a-bug.jd create mode 100644 pdk/docs/source/life-of-a-patch.jd create mode 100644 pdk/docs/source/overview-1.0.jd create mode 100644 pdk/docs/source/overview-1.5.jd create mode 100644 pdk/docs/source/overview.jd create mode 100644 pdk/docs/source/report-bugs.jd create mode 100644 pdk/docs/source/roles.jd create mode 100644 pdk/docs/source/source_toc.cs create mode 100644 pdk/docs/source/submit-patches.jd create mode 100644 pdk/docs/source/using-eclipse.jd diff --git a/pdk/Pdk.mk b/pdk/Pdk.mk index 526838410..d19b34293 100644 --- a/pdk/Pdk.mk +++ b/pdk/Pdk.mk @@ -54,7 +54,7 @@ pdk_hardware_dir := hardware/libhardware/include/hardware pdk_camera_dir := frameworks/base/include/ui # Destination directory for docs (templates + doxygenated headers) -pdk_docs_dest_dir := $(pdk_docs_intermediates)/docs/guide +pdk_docs_dest_dir := $(pdk_docs_intermediates)/docs/porting pdk_app_eng_root := $(pdk_docs_intermediates)/docs # Working directory for source to be doxygenated @@ -188,12 +188,12 @@ LOCAL_DROIDDOC_HTML_DIR := ../../../$(pdk_app_eng_root) LOCAL_MODULE := online-pdk LOCAL_DROIDDOC_OPTIONS:= \ - -toroot /online-pdk/ \ + -toroot / \ -hdf android.whichdoc online \ -hdf android.whichmodule $(LOCAL_MODULE) LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := build/tools/droiddoc/templates-pdk -LOCAL_DROIDDOC_CUSTOM_ASSET_DIR := assets-pdk +LOCAL_DROIDDOC_CUSTOM_ASSET_DIR := assets include $(BUILD_DROIDDOC) @@ -205,10 +205,6 @@ $(OUT_DOCS)/app.yaml: $(pdk_hosting_dir)/app.yaml @echo "PDK: $@" $(copy-file-to-target-with-cp) -$(OUT_DOCS)/pdk.py: $(pdk_hosting_dir)/pdk.py - @echo "PDK: $@" - $(copy-file-to-target-with-cp) - # Name the tar files name := android_pdk_docs-$(REQUESTED_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) @@ -232,11 +228,11 @@ $(call dist-for-goals,pdk_docs,$(pdk_docs_tarfile_zipped)) $(hide) gzip -cf $< > $@ # tar up all the files to make the pdk docs. -$(pdk_docs_tarfile): $(DOCS_OUT_DIR)-timestamp $(OUT_DOCS)/app.yaml $(OUT_DOCS)/pdk.py +$(pdk_docs_tarfile): $(DOCS_OUT_DIR)-timestamp $(OUT_DOCS)/app.yaml @echo "PDK docs: $@" @mkdir -p $(dir $@) @rm -f $@ - $(hide) tar rf $@ -C $(OUT_DOCS) $(LOCAL_MODULE) pdk.py app.yaml + $(hide) tar rf $@ -C $(OUT_DOCS) $(LOCAL_MODULE) app.yaml # Debugging reporting can go here, add it as a target to get output. pdk_debug: diff --git a/pdk/docs/about/about_toc.cs b/pdk/docs/about/about_toc.cs new file mode 100644 index 000000000..4676aceeb --- /dev/null +++ b/pdk/docs/about/about_toc.cs @@ -0,0 +1,18 @@ + + + + + diff --git a/pdk/docs/about/index.jd b/pdk/docs/about/index.jd new file mode 100644 index 000000000..2f98b6540 --- /dev/null +++ b/pdk/docs/about/index.jd @@ -0,0 +1,20 @@ +page.title=About the Android Open Source Project +doc.type=about +doc.hidenav=true +@jd:body +

Android is an open-source software stack created for mobile phones and +other devices. The Android Open Source Project (AOSP) is tasked with the +maintenance and further development of Android. Many device manufacturers have +brought to market devices running Android, and they are readibly available +around the world.

+

Our primary purpose is to build an excellent software platform for everyday +users. A number of companies have committed many engineers to achieve this +goal, and the result is a full production quality consumer product whose +source is open for customization and porting.

+

You can find more information about Android from these pages:

+ diff --git a/pdk/docs/about/philosophy.jd b/pdk/docs/about/philosophy.jd new file mode 100644 index 000000000..a1a75ccba --- /dev/null +++ b/pdk/docs/about/philosophy.jd @@ -0,0 +1,80 @@ +page.title=Philosophy and Goals +doc.type=about +@jd:body +
+

Android is an open-source software stack for mobile phones and similar +devices. The Android Open Source Project is tasked with maintaining current +and developing new versions of the Android software. We believe that users +deserve to have the source code to the software they run on their devices, +that developers deserve an open, level playing field for their apps, and that +OEMs and carriers deserve the freedom to differentiate and innovate. That's +why we created Android, and made the source code open.

+

Origin and Goal

+

Android was originated by a group of companies known as the Open Handset +Alliance, led by Google. Today, many companies -- both original members of the +OHA and others -- have invested heavily in Android, typically in the form of +allocating significant engineering resources to improve Android and bring +Android devices to Market.

+

We created Android in response to our own experiences launching mobile +apps. We wanted to make sure that there would always be an open platform +available for carriers, OEMs, and developers to use to make their innovative +ideas a reality. We wanted to make sure that there was no central point of +failure, where one industry player could restrict or control the innovations +of any other. The solution we chose was an open and open-source platform.

+

But the ultimate goal, of course, is to improve the mobile experience for +real users by facilitating innovation. Accordingly, the primary goal of the +AOSP is to make sure Android is a success as an end user product.

+

Governance Philosophy

+

The companies that have invested in Android have done so on its merits, +because we collectively believe that an open platform is necessary. In some +ways, Android is the purest form of an open-source (as opposed to free +software) effort: a group of organizations with shared needs has pooled +resources to collaborate on a single implementation of a shared product. That +is, the Android philosophy is pragmatic, first and foremost. The objective is +a shared product that each contributor can tailor and customize.

+

Uncontrolled customization can, of course, lead to incompatibile +implementations. To prevent this, the AOSP also maintains the Android +Compatibility Program, which spells out what it means to be "Android +compatible", and what is required of device builders to achieve that status. +Anyone can (and will!) use the Android source code for any purpose, and we +welcome all such uses. However, in order to take part in the shared +ecosystem that we are building around Android, device builders can take +advantage of the Compatibility Program.

+

Though Android consists of multiple sub-projects, this is strictly a +project-management technique. We view and manage Android as a single, +holistic software product, not a "distribution", specification, or collection +of replaceable parts. Conceptually, our notion is that device builders port +Android to a device; they don't implement a specification or curate a +distribution.

+

How We Work

+

We know that quality does not come without hard work. The +members of the Android Open Source Project have contributed full-time +engineers, product managers, UI designers, Quality Assurance, and all the +other roles required to launch modern devices in the modern marketplace. +We integrate the open source administration and maintenance into the larger +product development cycle.

+

In a nutshell:

+ +

To meet our goals, Android needs to achieve widespread, compatible +adoption. We believe that the best way to accomplish that is to make sure that +we ship high-quality, flagship devices with an intense product and end-user +focus. The "next release" of Android is driven by the product needs for the next +generation of mobile devices; the resulting excellent product is then released +to open source and becomes the new current version of the platform.

+
diff --git a/pdk/docs/community/community_toc.cs b/pdk/docs/community/community_toc.cs new file mode 100644 index 000000000..1f4094e5d --- /dev/null +++ b/pdk/docs/community/community_toc.cs @@ -0,0 +1,24 @@ + + + + diff --git a/pdk/docs/community/groups-charter.jd b/pdk/docs/community/groups-charter.jd new file mode 100644 index 000000000..69381d9a9 --- /dev/null +++ b/pdk/docs/community/groups-charter.jd @@ -0,0 +1,50 @@ +page.title=Android Discussion Groups Charter +doc.type=community +@jd:body +

Android mailing lists charter +

+
+
+
+
+

+Audience +

+

These discussion groups are intended for developers working with the Android platform. Everyone is welcome to join in, provided you follow our community's policies described below. Our users help each other, and many experts post to these groups, including members of the Open Handset Alliance. +

+

No topic is off-limits, provided it relates to Android in some way. However, since these are very busy lists, search the archives before posting your question; you may find your question has already been answered. +

+

+Mailing list rules +

+

We love simplicity and hate restrictions, so we keep our policies minimal. The rules below describe what's expected of subscribers to the Android mailing lists. +

+ +

The most important rule is friendliness. Remember: disrespect and rudeness are not welcome in our community under any circumstances. We don't have a formal policy on dealing with troublemakers, and we hope we never need one.That said, we do pledge to do our best to be fair, and we will always try to warn someone before banning him or her. +

+

+Contacting the moderators +

+

If you see anyone being rude, call them out on it. This is your group too, and you don't have to accept someone else being disrespectful just because it wasn't directed at you. Just remember to be polite and courteous yourself! Don't add fuel to the fire. +

+

But if you see an outrageous violation, want to report spam, feel very strongly about something, or even if you just want to chat, then contact the mailing list's owners. It's what we're here for! +

+
diff --git a/pdk/docs/community/index.jd b/pdk/docs/community/index.jd index bc04eee7d..d00838fbc 100644 --- a/pdk/docs/community/index.jd +++ b/pdk/docs/community/index.jd @@ -1,6 +1,122 @@ -home=true +page.title=Community +doc.type=community @jd:body +

Android Community

+

Welcome to the Android community!

+

The key to any community is, obviously, communication. Like most projects, +Android communicates via mailing lists. Because Android is an extremely large +project with many components, we have many discussion forums, each focusing on +a different topic.

+

Please check out the groups below, and join any that seem interesting to +you. Note that if you're a user looking for help with your Android device, +this page probably isn't for you; you should contact your carrier or retailer +for help with your phone.

+

Please note that if you're looking for information about building +applications for Android, you can find a separate set of groups for those at +our sister site, developer.android.com: http://developer.android.com/community/index.html

-

- Some community information here -

+

Getting the Most from Our Lists

+

Please consider the following before you post to our lists.

+
    +
  1. Read the Charter + for our forums. This explains the (few) rules and guidelines for our + community.
  2. +
  3. Search the group archives to see whether your questions have already + been discussed.
  4. This avoids time-wasting redundant discussions. +
  5. Use a clear, relevant message subject. This helps everyone, + both those trying to answer your question as well as those who may be + looking for information in the future.
  6. +
  7. Give plenty of details in your post. Code or log snippets, + pointers to screenshots, and similar details will get better results and + make for better discussions. For a great guide to phrasing your questions, + read How To + Ask Questions The Smart Way.
  8. +
+

Open Source Project discussions

+ + +

Using email with Google Groups

+

Instead of using the Google Groups +site, you can use your email client of choice to participate in the mailing lists.

+

To subscribe to a group without using the Google Groups site, use the link +under "subscribe via email" in the lists above.

+

To set up how you receive mailing list postings by email:

+
    +
  1. Sign into the group via the Google Groups site. For example, for the android-framework group you would +visit http://groups.google.com/group/android-framework.
  2. +
  3. Click "Edit my membership" on the right side.
  4. +
  5. Under "How do you want to read this group?" select one of the email options.
  6. +
+ +

Android on IRC

+

We also have a presence on IRC via Freenode. We maintain two official IRC +channels on irc.freenode.net:

+ +

The channels above are official. There are a few other channels the +community is using, but are not official. These aren't official or officially +moderated/managed, so you use the channels below at your own risk. The Open +Handset Alliance doesn't endorse these channels, there's no warranty express +or implied, and so on. There may be more.

+ diff --git a/pdk/docs/compatibility/compatibility_toc.cs b/pdk/docs/compatibility/compatibility_toc.cs index 3952495e5..8e16bc8d4 100644 --- a/pdk/docs/compatibility/compatibility_toc.cs +++ b/pdk/docs/compatibility/compatibility_toc.cs @@ -5,23 +5,17 @@ function nothing() {} + + + + diff --git a/pdk/docs/downloads/index.jd b/pdk/docs/downloads/index.jd new file mode 100644 index 000000000..f196808e0 --- /dev/null +++ b/pdk/docs/downloads/index.jd @@ -0,0 +1,46 @@ +page.title=Downloads +doc.type=downloads +doc.hidenav=true +@jd:body +
+

This page provides access to various downloads. Note that if you're looking +for the Android SDK (for application developers), you should visit developer.android.com.

+ +

Compatibility

+

The Compatibility Definition Document can be downloaded below. The +Compatibility Test Suite is available in the open-source tree.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
ItemFileSize
Android CDD 2.1android-cdd-2.1.pdf23070805 bytes
Android CTS 2.1 Manualandroid-cts-manual-2.1.0.pdf23070805 bytes
Android CDD 1.6android-cdd-1.6.pdf23070805 bytes
Android CTS 1.6 Manualandroid-cts-manual-1.6.4.pdf23070805 bytes
+

For more information on how to build an Android-compatible device, see the +Compatibility page. Note that +there is no compatibility program for Android 1.5 and earlier. Note also that +there is no compatibility program for Android 2.0, since it was superceded by +Android 2.1 after only a few weeks. +

+
diff --git a/pdk/docs/images/bluetooth-0.jpg b/pdk/docs/images/bluetooth-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f06eebf40b4289ab8bac47f4b2e32c51ffbf82c5 GIT binary patch literal 31390 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/images/cts-0.png b/pdk/docs/images/cts-0.png new file mode 100644 index 0000000000000000000000000000000000000000..cca38c577b43572095d664212cc9f21e373fbb1a GIT binary patch literal 24277 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/images/cts-process-1.png b/pdk/docs/images/cts-process-1.png new file mode 100644 index 0000000000000000000000000000000000000000..265643398f561471aff44a7030d2bebfa67907a0 GIT binary patch literal 18338 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/images/discuss-0.png b/pdk/docs/images/discuss-0.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cea108ad4c08ae41aa953c8eeba99ebd70aa15 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u@pObhHwBu4M$1`kYDQQ;us<^ zwROU2&LajqF7utNiu@-hZDZQ0wo>iw!5K&U64^@xKPUIduB!T5X3{^&{jEiJ=v6bL zRl5TB+{k)6VR^)q%V!=xw^=0WE+nPi?-Y97q|7nxlJGpf2^Y>X*_CWot+MKE+4_6y mmE3^3dGFXZsQ=IV!}@9Zgw0xyc3A-(z~JfX=d#Wzp$PzbO-J$o literal 0 HcmV?d00001 diff --git a/pdk/docs/images/documentation-0.png b/pdk/docs/images/documentation-0.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cea108ad4c08ae41aa953c8eeba99ebd70aa15 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u@pObhHwBu4M$1`kYDQQ;us<^ zwROU2&LajqF7utNiu@-hZDZQ0wo>iw!5K&U64^@xKPUIduB!T5X3{^&{jEiJ=v6bL zRl5TB+{k)6VR^)q%V!=xw^=0WE+nPi?-Y97q|7nxlJGpf2^Y>X*_CWot+MKE+4_6y mmE3^3dGFXZsQ=IV!}@9Zgw0xyc3A-(z~JfX=d#Wzp$PzbO-J$o literal 0 HcmV?d00001 diff --git a/pdk/docs/images/download-0.png b/pdk/docs/images/download-0.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cea108ad4c08ae41aa953c8eeba99ebd70aa15 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u@pObhHwBu4M$1`kYDQQ;us<^ zwROU2&LajqF7utNiu@-hZDZQ0wo>iw!5K&U64^@xKPUIduB!T5X3{^&{jEiJ=v6bL zRl5TB+{k)6VR^)q%V!=xw^=0WE+nPi?-Y97q|7nxlJGpf2^Y>X*_CWot+MKE+4_6y mmE3^3dGFXZsQ=IV!}@9Zgw0xyc3A-(z~JfX=d#Wzp$PzbO-J$o literal 0 HcmV?d00001 diff --git a/pdk/docs/images/git-repo-0.png b/pdk/docs/images/git-repo-0.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cea108ad4c08ae41aa953c8eeba99ebd70aa15 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u@pObhHwBu4M$1`kYDQQ;us<^ zwROU2&LajqF7utNiu@-hZDZQ0wo>iw!5K&U64^@xKPUIduB!T5X3{^&{jEiJ=v6bL zRl5TB+{k)6VR^)q%V!=xw^=0WE+nPi?-Y97q|7nxlJGpf2^Y>X*_CWot+MKE+4_6y mmE3^3dGFXZsQ=IV!}@9Zgw0xyc3A-(z~JfX=d#Wzp$PzbO-J$o literal 0 HcmV?d00001 diff --git a/pdk/docs/images/git-repo-1.png b/pdk/docs/images/git-repo-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc8dcb009c7e409441f56aba0eb2587683b6684 GIT binary patch literal 102306 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%0A% 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/images/how-it-works-1.png b/pdk/docs/images/how-it-works-1.png new file mode 100644 index 0000000000000000000000000000000000000000..856674a8f74e9d1b41380d3dec621250347452b8 GIT binary patch literal 11169 zcmc&)Wm_CgvnIF(*A31>aCZm}!Cita?(VV#3j}v}4I~gWI4tg-;O;JqFaGkJKXE?H z^wl$cRafqc^lrjYsg8$RZV<2 ze48LzODIdg!PUlNJeeZB&8f^kYbe9P`O(9{1$~2qdw6>kbN~nE$?-ILxCxLgd$w5<&5$iG{%0|9X78;M@;U?idp`>K}46}QojyR}F6{Kp*8 z{HGm;H#$)HWcr4Vktlc%6)X=T$T{TktnAYbW6he^vLpXG_=?QFvUW2Zu;zFCTll0# zDr1K|@P2gO$lGXN3#6WOJ11_v`4}JgL`y<0;sf1|7klZ$SAE*V4%D+ql(}6GeC>SN zWv{4)_=&eK*;NpRG%^5g9$2x3qqm02B2wvWMW0@vK zZa*#OK!MLM&yTdQ!?JvOYRLV#^UDT`So8Dka?_$!HeCeTZlkWHdQe_<@cW*-G49E4 zw0bC5WY;|y?3k3Fz*Q~#0S*WD);aEnJ<)8CQMR^)*SAHO|E-o;(Mhha2IY z1gTFKk*Wec`(m&6$*P}PaQZ}*Gz?Vc8DW=uG^(J}+Cd6)5Q9pNz+g_k|ISa{ybqtM zEZUAHn*zfF%^Guz2+$Q4NSU0Pg}$f?%yt>*&#l+ zi`IaOH|6Vnd6@6~Pto69$O0UtZLjqli5QMH$qop><~66`0H>gH1Luy0s|jIBuNkz- zc9>tPBXmmL|J=L$Qw|O#408Qfks$14Wgc?dP*K%-6vI97Ib@++j&o_H*W_mGPzZjV z#Nly^xD$3z9DhmSk~#in00?K4A`X2pHvUCE*x6m@&2MK?>pee!pc|cf_d!*|oc?Wr zAYyG7T0nQ+&wpDiqB;oV!RLu`6p>V>*F;6wfDQ~kcpoQ{M#jtJ>f}Pth2L7|V z)w`uY*r>C}t3tr?1w(GI|0OY`ST>eS)bE;U@efat1sBJ;anVW! zX6YR|%RT5U2H{*7u%{mi9(8!QKCGy$8%dqN3q8jurk`uW`fAme_xPda?RzD5LT54P zB5t6~%P|YC<)u(XYslPUqrh~`t-$mS_VW2du-lJm)Cqp zd}aL^^1$X<+c{+3*neC++`89i?M<_dgbXlUGd9@+4i)!vy^Zg*om_X$s)BE~A5WbF z0rGN`0X*QrIP%Bk^%t+`-;K|KU{Eg4WdlE8xvF_@pq~ij*0k!y-L*NiJrK*iCLww9 zwt-0B`u&7AyjddQwX3(ThwIZ>c`)C$y#ovK@^$%!u;bDn$`|N&hCDA7G)Q$!<_h%o zcw5!jq&qB5?8OHLd3iVvFAluQUT66;C0Um1m6Z?)OgH4Bdbx-XRI>GuBP1R?fsom7 zL*PQ*ub+0l+^`2H+Wh$Na?^)V3X97X@mn##a+dlYzvOw>5o;+x4rWlw=u%}73ZV@t zBVClou}6%W-a9M)y({O$4Z*!`KCWu(Nk5ux)4wsW#|*Fqe*uF6o_||43ZMI$-0;qE zrK@moh5#vq5(!V9pYPVIG39XpSN6U##3(0m|FL0uJ60G}-QBqAz5W~|75D4gx&8J! z1$W`%X&rO50XPyE+e>O^6c|A3CK4XpV1$;Ed{kjP3=1|^1 zh9qhgETlTcKH4)t^3;iK;pxGQ>OAK)S7!|y!kgniV;!4SVR2-__q&|VYaYi&%vFD) zmgZe|43j^jLPUyINTL=!T^V>V`oSd%A5hxz+^;Nqwj_0WQw4PVAxD>-HdIo}P~Mb{ zOP}!=7MDy?2Xj>RmWMsEi(J@T+l`ZRyC84;d4w)Qhk)Hy=Dsn{D?COfgnCP^o6a$x zaeVND``DY~ltLNI{kTWFi-xg|>va|U^VjqW=_myq{?sL}&{DWF3o>xb5L+JH+L%3h zGF=AxNxsg%o~QH3clg`8VuQKaY{+x3jTsc#y(oCV&6;+oFGH*4SY7)`KGNHQzzU-|smsl~mNo z3iDdcKVRoMkgCa7&Q}{*rW(#@#61=c7;|n?$K3B=t_q}pNfMtCUf-Q2&Jw2p^ z5#LiSXzXNJ{6;gix0+8B8mqbF9#)=vae!WR>29Ne@*dwjv-?O2<1F>ug43IGECfEa zlfLTvLu303GWcOpY}U(Z245|wc*4)y{#hycSC8GE`EzG=&*R~HV}IbAU%9fO6bQ!_ zfr`8H!+-)y(p8LNQd|J&{0<_r0oRJ&w^L2TGUj3~S%d{+`m=R}keM=I$!9)*X$qQO6)BJhTaRV%n(w_j z+c;6IBVY^9dC;DQN=U4}|MUr##ZAmtEZ@fK|0Du!(7@DSMNvTX8@f-dQFQH3p5)MN z(KC*wY7U;O#De9y^q`F}tq?(UY&nEXYQ{B$#Z$gMaeM3INih3j*FFvm{Y$Or zCx>e%|1;;m)a&JZL=X|axs++NDlNKzNEb}|13MNk)onniBT*>V{a8PkV}Wll=fqGE znk(q8DDc=)QccH_HLX^gIZ?5ub*5Zd#^l0(V45Z$bmwF zP(lJrN11vEv*0KVYVGY;8P)9yLLG?c?E(Vi8pl!|kO`z=5xC$3@+>Q zpOv6e8vyRBKdJSi>Ac1!8}}WWi4y!T{fk zxA@O$Z!qKhvha6X82a6~Hc_cZ?j48($f69gLa6!@akxFv&z}<7U!XLxNlOPtiV56h z1_>TOx3g*?nq}kVe|SY4Y6l@G2IL_&+zUUdf1HL^&xWOf=IdogXNc>7;1+*;2#q?3 zR9LWc^|I;R-d6(x37q@_J8hyrTEY_h-`Jd%u4Ig^i)v2{*hFABjwH=$xLf zuh<}swd(vaI*Vig9zJxNB_wmI1I)qTYF<5nyXwTi2NcMDj(c2UBMZdJD|NNf*9B@S z$NksO|JQZ?>r+|j0jk+jsK4H8b3GLJH@1N(*7~u72lk@VQOY7z--#ViuT0;E)4`R~)kfWxm6{i?78{ z^lRJ5#P`t@oA9xuJD%)gt2(tF;&fgoUSuWNzRU&wQNyeB!ZhYV(BT^r_ojZyWo2}L z6~Tj!|7DhIggAedRqAPa?TGKz#aJnvOD7fzXDGRuGl)+Gx*D3s(8zAdTah(-Fq$-buZ|t~wA?JO=udbnM86v##?AxG>;IQHPiNk zCa-yw0TJlxG)HTcO8rw75==J8O%Zvy#{ap?^M^|QRKRD;c$SCW!`AqXu5<;0nf$@K zP@5C%XUR_~{qtt-CZ#$39|<)t7}CSnOaUZ|M!Wq{OJ zeiECIdko>y%En`#E|2MO{S$~kXY)Ui`|A_@q1L`8)>s!Wz9_rT_b;aV`M3{2c3$Mq zgIGAl!kFvPvt!P6@TMHIct__cSKvlPtQ-F5mT}R0`q1c zAL?1?GJD>^gz!0m8nI`vl@X76{Z6%9S|^8M&HH312nR5AYBt3xqHLpSwb44%l?+Dx zjI*x|mk$t-OwFeQug=xMCZ0IpYVa?Rbh0L#WvlM6dlTKTGMPy;#LIFG>7+SqD@w(= z->_RBZA2W^ZAFGQk$k>ZGp6biYtu@IiN2)OCd%4Y<0VtYn%|&k>Pi&vS@pN`+&ipG zeXJpcIdFXX^k3|8%*JW7F-JH818?s#1si~{uiEVi`aj7-JlN6pCH-tP`{pvm@#t`= zs4~}`Zs$X4IE9zA2z67xyik z{F1*08`F(DMM20o^?m4H=4E!dQ6MV?Jqn{+kKH^Wq?VP=-(H*EfmSPd9M|o5vS0J9(m-8(4pzUuQCfQd*k%_{f`6=(zt*ok61MV^Mt^8WQMI2Kv0XDcyXrEN3ue5Wu{RM(otwNym39z@M( z?u66tgt`08`CF;nSZEZlL$|9ecSfYmXfz7UtV!;o6uuuljDNmJAO-H(q*?V?b?ISD z=gYK|H|to9C{0YvTb3u|zE5})f!-!EMOkIr;Da^WKvTOziKJ3m)J{#x$B0Axyav4~ zc|IxXfhqR(6SAAxg|yRFQBDVs=CPa*r(Gr`q}HJK4B$@m;*t_sq<)e$ zwDE)#rte9VrB_S12K2a(NV7l%%Y;hn`Jq7;c`+44utlTT!_PhHgK~;5At2y;m>CD|?Fy3>JCU_bC2eO36 zqX=9~$M^1wn+hF+fbn;CqDj~uzbsYVa&rB<3E!U$^|7UYsr3IT>N@=L`xt_kt{M-y zoEvOnRn&Ve^9ojscYMxY>u}%{u|gNLT(b8x(*FYH4S)LV3$7ofYQO@$RFXUby*lo* zqL7levX<0z4(%>@FQ7?ScfOg&x*}%Rp$?V$R1;hDef1$3Y7>%UpSgR@TzYBk|9mM& zd9aPlKW&}gmXd21@G}coe!UN9TK#HWg*>=}e96>I!o23(`E2OZ8|sK(hRHyuaBx^l z-Bdns;Vi1H0Vh*ePiptix%YvLzrPBuqw;1vp4n1v)vxElZGKQFAt_afck3b?HSkdP zN<1j_H!oF}Ocpnr{}e>h{w4bJykmU-s@3nFy5*}0?7?YV%gfafUb+@rCLEkGnf}2`+)iU6X;W^i$5nQS8 zG{k{WB^3~-dQC597J};$pHa=^Z4dxUAhh|X3K^N8ME;H(UZ1Sl7*&+{Wg^nn5zvjR zR$xMsC4RwL#jL#BsCx7etmi(?JFjmY+ICL)bP|Eq;P80%s#r}AmFoTemN;TcX77hz z@~hwt`D@uYtSP6F)2d*!=U|FVl>R+9#&(lau`kqW$|w1yDZ8KCYI7>!R(J^DdYLzV z*3U0|n{5nNs5xx0$4=3GI~XC=&Jg18(LfH<+QOVGK-}GU?}7R%MrA4JXB=(1(T}k1 zTY-L3+6z1|j%~}b69rzCrFNu`vny>x7|2gsT`BN)U4VN7@3q|XoJ0oBop@3D2D9uJ z&_DS$L+M(gPadf_W9r(9dwW+2=y_>QX8e&TFuN+=dKLoa0S;I1Ur!k99rUj%kh3}n zZU)Vlju|zV_OA@co{=a$RL7NJ#4_ctbO?KNlpneyDmd31I_&32XFPZ)o9Qi>)mwwC zpcX2EqL?|Dz7i*}xCGIH$rJ>0G_!G;>(*v2ny8@(^Ek29zZI#C-%-RU*|>)v>r>Lw zLz{{JRPljbYLf;t1b#xSlvul{^+JsmC-$yL3Y`8nsdZpdQ>X|X(uLa&l6%i+!mGCH zub$!q>uy^CnBb>H2kX{0Xl#p3{>ydQVhx_aQ^h(FUK(x~SHY^vqq$5sPG2I{oVbO8 zQP5@>T=q1Qh$8iUl zb^SIi3#@{Q8x_H39<0wlvLU_ig?$FiqjZC#ObGG6)jcOTO+$j&=Hynv?7rs&a$e-k%d(>x#l~8$5^d*Lm0Vq+1;i_UzOnahYe@7lEyhj#n3l` z+~`?Va0YwA8C}gt^cvgYK1lpz+TFLJw+kyWh@6f3wCGsR+H@f)DfrAASI*7UA3KdZ zwhc%VK%(XiI(N8AE(fwRg?;mE=MAy~93a*Ug9XM=Dpze@h}>DwL>@=9bi z(C3_4;-YnL4Sfi~Y^Ox;+%e=%^w~(JW!(Y*b_*~*zTv&f-UB-}I_AD+&ejski`ZPG zZZuFFZC3Cph8&{Ty~|1A;MTZ$5Yc7ljjETQ%@p(q=4a`=NF633^IEGUuLpv`hkf2? zC8in5>Y>T^s5wB96{_$Ewx3$yX6Sr|y9sV8l*WN=kR9_A#byUI2)qYv-+l4ObK$&AC+)VQ1V3j9DmcMr;;XxJrYN1KtY$t49tM5}VeKCNeK0~9jX?L)q6x#r+H(1BRV zccWlQohmsH9?JWNpeCnN3zJOoETLjGo;2 zRz)o+eJ%@bHTVl`n~puMMfc^%SJkp-mVgJ*H~7^BWw9?ak~J+Y0q)99rKEet$)Yfab69NW zj96VQQeb)CZoG^$8!3g3Atbo{5}q_L#zBa7`^d;TTg8WFCNam^O7saU{v!tKp>H|j zT>+67Z9EOHd9UBO^A}Q2-~|_Mn?nvYopzaJG2RytPxfLLy`3kp1LNFvGwU;=ccgPF zo7*9Ja-@m

ud-QCq|Jn-W; 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 GzyAeo%}N^p literal 0 HcmV?d00001 diff --git a/pdk/docs/index.jd b/pdk/docs/index.jd index d7077d55d..1f7b552a8 100644 --- a/pdk/docs/index.jd +++ b/pdk/docs/index.jd @@ -1,114 +1,55 @@ +page.title=Welcome to Android home=true @jd:body +

+
+

News crap here

+

This is a test of the emergency broadcast system. This is only a test. Had +this been an actual emergency, we would have fled in terror, and you would not +have been informed.

+
+Android Mascot +
-
-
-

Android Open Source Project

- -

Android is the first free, open source, and fully customizable mobile platform. - Android offers a full stack: an operating system, middleware and key mobile applications. - It also contains a rich set of APIs that allows third-party developers to develop great - applications.

-
+
+
+

Get Involved

+
+

Learn how you, for one, can help welcome our new Android overlords.

+

More »

+
+
-
- - - - - - - - - - - - - - - +
+

Build a Device

+
+

So, + you think you have what it takes to build an Android device? We'll see; + we'll see.

+

More »

+
+
-
-

Download

-

The Android SDK has the tools, sample code, and docs you need to create great apps.

-

Learn more »

-
 
-

Publish

-

Android Market is an open service that lets you distribute your apps to handsets.

-

Learn more »

-
 
-
- +
+

Compatibility

+
+

There's more to this than + just booting the Linux kernel. Don't be evil, be compatible.

+

More »

+
+
+
- - - - - +
diff --git a/pdk/docs/porting/audio.jd b/pdk/docs/porting/audio.jd new file mode 100755 index 000000000..e82788f63 --- /dev/null +++ b/pdk/docs/porting/audio.jd @@ -0,0 +1,61 @@ +page.title=Audio +pdk.version=1.0 +doc.type=porting +@jd:body + +
+
+

In this document

+ + +
+
+ + +

AudioHardwareInterface serves as the glue between proprietary audio drivers and the Android AudioFlinger service, the core audio service that handles all audio-related requests from applications.

+

+ +Solid elements represent Android blocks and dashed elements represent partner-specific blocks. + + + +

Building an Audio Library

+ +

To implement an audio driver, create a shared library that implements the interface defined in AudioHardwareInterface.h. You must name your shared library libaudio.so so that it will get loaded from /system/lib at runtime. Place libaudio sources and Android.mk in vendor/acme/chipset_or_board/libaudio/.

+

The following stub Android.mk file ensures that libaudio compiles and links to the appropriate libraries:

+ +
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libaudio
+
+LOCAL_SHARED_LIBRARIES := \
+    libcutils \
+    libutils \
+    libmedia \
+    libhardware
+
+LOCAL_SRC_FILES += MyAudioHardware.cpp
+
+LOCAL_CFLAGS +=
+
+LOCAL_C_INCLUDES +=
+
+LOCAL_STATIC_LIBRARIES += libaudiointerface
+
+include $(BUILD_SHARED_LIBRARY)
+
+ + +

Interface

+ + + +

Note: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, click here.

+ + + diff --git a/pdk/docs/porting/bluetooth.jd b/pdk/docs/porting/bluetooth.jd new file mode 100755 index 000000000..e9749827b --- /dev/null +++ b/pdk/docs/porting/bluetooth.jd @@ -0,0 +1,193 @@ +page.title=Bluetooth +pdk.version=1.0 +doc.type=porting +@jd:body + + + +

Android's Bluetooth stack uses BlueZ version 3.36 for GAP, SDP, and RFCOMM profiles, and is a SIG-qualified Bluetooth 2.0 + EDR host stack.

+ +

Bluez is GPL licensed, so the Android framework interacts with userspace bluez code through D-BUS IPC to avoid proprietary code.

+ +

Headset and Handsfree (v1.5) profiles are implemented in the Android framework and are both tightly coupled with the Phone App. These profiles are also SIG qualified.

+ +

The diagram below offers a library-oriented view of the Bluetooth stack. Click Bluetooth Process Diagram for a process-oriented view.

+ +

+ +Solid elements represent Android blocks and dashed elements represent partner-specific blocks. + + + +

Porting

+ +

BlueZ is Bluetooth 2.0 compatible and should work with any 2.0 chipset. There are two integration points:

+

    +
  • UART driver
  • +
  • Bluetooth Power On / Off
  • +
+

+ + +

UART Driver

+ +

The BlueZ kernel sub-system attaches to your hardware-specific UART driver using the hciattach daemon.

+

For example, for MSM7201A, this is drivers/serial/msm_serial.c. You may also need to edit command line options to hciattach via init.rc.

+ + +

Bluetooth Power On / Off

+ +

The method for powering on and off your bluetooth chip varies from Android V 1.0 to post 1.0.

+ +

    +
  • 1.0: Android framework writes a 0 or 1 to /sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on.
  • + +
  • Post 1.0: Android framework uses the linux rfkill API. See arch/arm/mach-msm/board-trout-rfkill.c for an example.
  • +
+

+ +

Compiling

+ +

To compile Android with Bluetooth support enabled, add the following line to BoardConfig.mk. +

+BOARD_HAVE_BLUETOOTH := true
+
+ +

Troubleshooting

+

Debugging

+

To debug your bluetooth implementation, start by reading the logs (adb logcat) and look for ERRROR and WARNING messages regarding Bluetooth. + Andoird uses Bluez, which comes with some useful debugging tools. The snippet below provides examples in a suggested order:

+
+hciconfig -a  			# print BT chipset address and features. Useful to check if you can communicate with your BT chipset.
+hcidump -XVt  			# print live HCI UART traffic.
+hcitool scan  			# scan for local devices. Useful to check if RX/TX works.
+l2ping ADDRESS  		# ping another BT device. Useful to check if RX/TX works.
+sdptool records ADDRESS # request the SDP records of another BT device.
+
+ +

Deamon Logs

+

Deamon logs for hcid (STDOUT) and hciattach (STDERR) are sent to /dev/null by default. Edit init.rc and init.PLATFORM.rc to run these daemons under logwrapper, which redirects output to logcat.

+

hciconfig -a and hcitool

+

If you compile your own system.img for Android, and hciconfig -a works but hcitool scan doesn't, try installing the firmware for the Bluetooth chipset. This firmware isn't yet available in the open source codebase, but you can adb pull and then adb pushit from a stock T-Mobile G1 (located in /etc/firmware/brf6300.bin).
+

+

Tools

+ +

BlueZ provides a rich set of command line tools for debugging and interacting with the Bluetooth sub-system, including:

+

    +
  • hciconfig
  • +
  • hcitool
  • +
  • hcidump
  • +
  • sdptool
  • +
  • dbus-send
  • +
  • dbus-monitor
  • +
+

+ + +

Feature Support

+

This section provides a change history of Bluetooth features added in each Android release and provides some rough guidance as to future features.

+

Android 1.0 release

+
Platform features
+
    +
  • Based on Bluez 3.36 and Linux Kernel 2.6.25
  • +
  • Bluetooth 2.0+EDR host stack
  • +
  • Headset Profile 1.0 in Audio Gateway role
  • +
  • Handsfree Profile 1.5 in Audio Gateway role
  • +
      +
    • Three-way calling
    • +
    • Phonebook over AT commands +
    • +
    +
+
Qualifications
+
    +
  • QDID B014524: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP)
  • +
  • QDID B014624: EPL for HTC Dream (HSP, HFP)
  • +
+
Example products
+
    +
  • HTC Dream / T-Mobile G1
  • +
+

 

+

Android 1.1 release

+

No Bluetooth changes since 1.0

+

 

+

Android 1.5 release (cupcake)

+

Platform features

+
    +
  • Based on Bluez 3.36 with Linux Kernel 2.6.27
  • +
  • Bluetooth 2.0+EDR host stack
  • +
      +
    • Support for auto-pairing with '0000' devices
    • +
    +
  • Headset Profile 1.1 in Audio Gateway role
  • +
  • Handsfree Profile 1.5 in Audio Gateway role
  • +
      +
    • Three-way calling
    • +
    • Phonebook over AT commands
    • +
    • Volume synchronization
    • +
    • eSCO
    • +
    • Extensive bug fixes and compatibility improvements
    • +
    +
  • Stereo Bluetooth (A2DP 1.2) in Source role
  • +
      +
    • AVDTP 1.2 in Acceptor and Initiator roles
    • +
    • GAVDTP 1.0 in Acceptor and Initiator roles
    • +
    • 44.1 khz, stereo, software SBC codec
    • +
    +
  • Remote Control (AVRCP 1.0) in Target role
  • +
      +
    • AVCTP 1.3 in Target role
    • +
    • play/pause/stop/prev/next
    • +
    +
+

Qualifications

+
    +
  • QDID B015261: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP, AVCTP, AVRCP, GAVDP, AVDTP, A2DP)
  • +
  • QDID B015262: EPL for HTC Sapphire (HSP, HFP)
  • +
+
 
+

Future releases

+

This section offers a rough guide of which features the team is developing for the next release. This feature list may change without notice. It isn't possible to post scheduling advice to the mailing lists.

+
    +
  • Java Bluetooth API
  • +
  • Bluez 4.x with Linux Kernel 2.6.29
  • +
  • More profiles...
  • +
  • Bluetooth 2.1+EDR
  • +
+ +

Development Notes

+
    +
  • HID Support
    +
    Cupcake features some early work—Bluez has an HID plugin, external/bluez/utils/input/Android.mk, which gets compiled.
    +
    +You can interact directly with this plugin using dbus-send and dbus-monitor. While not officially supported, you should be able to connect and use a HID keyboard and mouse using the Bluez HID plugin API. Next steps include plumbing the plugin API in the Android Java framework and offering better support for HID input methods (new keymaps and mouse support).
    +
    +
  • +
  • Tethering - DUN and PAN Support
    + Cupcake features some early work—Bluez has has DUN and PAN daemons which get compiled and external/bluez/utils/dun/Android.mk + external/bluez/utils/pan/Android.mk +BNEP support is compiled into the kernel with cupcake.
    +
    +While not officially supported, you should be able to run dund or pand daemons and, using pppd or iptables, test tethering support. Next steps include plubming the DBUS APIs to these daemons up into the Android Java framework and adding code to setup the network paths via pppd and / or iptables.
    +
    +
  • +
  • Emulator Support
    + The Android emulator does not support Bluetooth at this time and there currently aren't any plans for its support.
    +
    +
  • +
  • Bluetooth 2.1 and Simple Pairing Support
    + In order to support these features, Android needs to move to a Bluez 4.x version. This change is not scheduled at this time.
  • +
diff --git a/pdk/docs/porting/bluetooth/bluetooth_process.jd b/pdk/docs/porting/bluetooth/bluetooth_process.jd new file mode 100755 index 000000000..ea46f231e --- /dev/null +++ b/pdk/docs/porting/bluetooth/bluetooth_process.jd @@ -0,0 +1,7 @@ +page.title=Bluetooth Process Diagram +pdk.version=1.0 +doc.type=guide +@jd:body + +

The diagram below offers a process-oriented architectural overview of Android's Bluetooth stack. Click Bluetooth to return to the Bluetooth overview page.

+ diff --git a/pdk/docs/porting/bluetooth/images/androidBluetoothProcessDiagram.jpg b/pdk/docs/porting/bluetooth/images/androidBluetoothProcessDiagram.jpg new file mode 100755 index 0000000000000000000000000000000000000000..6872180189905c38708c38358afd602503347f43 GIT binary patch literal 178909 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 L-yz`qKKZ`@_$hz& literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/bring_up.jd b/pdk/docs/porting/bring_up.jd new file mode 100755 index 000000000..022c18534 --- /dev/null +++ b/pdk/docs/porting/bring_up.jd @@ -0,0 +1,359 @@ +page.title=Bring Up +pdk.version=1.0 +doc.type=porting +@jd:body + +

Once your code is built and you have verified that all necessary directories exist, power on and test your device with basic bring up, as described below. Bring up tests are typically designed to stress certain aspects of your system and allow you to characterize the device's behavior.

+

 

+

1. Confirm a Clean Installation of a Basic Linux Kernel

+

Before considering Android-specific modifications to the Linux kernel, verify that you can build, deploy, and boot a core Linux kernel on your target hardware.

+

 

+

2. Modify Your Kernel Configuration to Accommodate Android Drivers

+

Your kernel configuration file should include the following:

+
+#
+# Android
+#
+# CONFIG_ANDROID_GADGET is not set
+# CONFIG_ANDROID_RAM_CONSOLE is not set
+CONFIG_ANDROID_POWER=y
+CONFIG_ANDROID_POWER_STAT=y
+CONFIG_ANDROID_LOGGER=y
+# CONFIG_ANDROID_TIMED_GPIO is not set
+CONFIG_ANDROID_BINDER_IPC=y
+
+

3. Write Drivers

+

Android ships with default drivers for all basic functionality but you'll likely want to write your own drivers (or at least customize the default drivers) for your own device depending on your hardware configuration. See the following topics for examples of how to write your own drivers.

+ +

 

+

4. Burn Images to Flash

+

An image represents the state of a system or part of a system stored in non-volatile memory. The build process should produce the following system images:

+
    +
  • bootloader: The bootloader is a small program responsible for initiating loading of the operating system.
  • +
  • boot:
  • +
  • recovery:
  • +
  • system: The system image stores a snapshot of the Android operating system.
  • +
  • data: The data image stores user data. Anything not saved to the device/data directory will be lost on reboot.
  • +
+
    +
  • kernel: The kernel represents the most basic element of an operating system. Android's Linux kernel is responsible for managing the system's resources and acts as an abstraction layer between hardware and a system's applications.
  • +
  • ramdisk: RAMdisk defines a portion of Random Access Memory (RAM) that gets used as if it were a hard drive.
  • +
+

 

+

Configure the bootloader to load the kernel and RAMdisk into RAM and pass the RAMdisk address to the kernel on startup.

+

 

+

5. Boot the kernel and mount the RAMdisk.

+

 

+

6. Debug Android-specific init programs on RAMdisk

+

Android-specific init programs are found in device/system/init. Add LOG messages to help you debug potential problems with the LOG macro defined in device/system/init/init.c.

+

The init program directly mounts all filesystems and devices using either hard-coded file names or device names generated by probing the sysfs filesystem (thereby eliminating the need for a /etc/fstab file in Android). After device/system files are mounted, init reads /etc/init.rc and invokes the programs listed there (one of the first of which is the console shell).

+

 

+

7. Verify that applications have started

+

Once the shell becomes available, execute % ps to confirm that the following applications are running:

+
    +
  • /system/bin/logd
  • +
  • /sbin/adbd
  • +
  • /system/bin/usbd
  • +
  • /system/bin/debuggerd
  • +
  • /system/bin/rild
  • +
  • /system/bin/app_process
  • +
  • /system/bin/runtime
  • +
  • /system/bin/dbus-daemon
  • +
  • system_server
  • +
+

Each of these applications is embedded Linux C/C++ and you can use any standard Linux debugging tool to troubleshoot applications that aren't running. Execute % make showcommands to determine precise build commands. gdbserver (the GNU debugger) is available in the bin directory of the system partition (please see http://sourceware.org/gdb/ for more information).

+

 

+

8. Pulling it all together

+

If bring up was successful, you should see the following Java applications (with icons) visible on the LCD panel:

+
    +
  • com.google.android.phone: The Android contact application.
  • +
  • com.google.android.home
  • +
  • android.process.google.content
  • +
+

If they are not visible or unresponsive to keypad control, run the framebuffer/keypad tests.

+ + +

Android Init Language

+ + +

The Android Init Language consists of four broad classes of statements:

+
    +
  • Actionn
  • +
  • Commands
  • +
  • Services
  • +
  • Options
  • +
+

The language syntax includes the following conventions:

+
    +
  • All classes are line-oriented and consist of tokens separated by whitespace. c-style backslash escapes may be used to insert whitespace into a token.  Double quotes may also be used to prevent whitespace from breaking text into multiple tokens. A backslash
    + appearing as the last character on a line is used for line-folding.
  • +
  • Lines that start with a # (leading whitespace allowed) are comments.
  • +
  • Actions and Services implicitly declare new sections. All commands + or options belong to the section most recently declared.  Commands + or options before the first section are ignored.
  • +
  • Actions and Services have unique names.  If a second Action or Service is declared with the same name as an existing one, it is ignored as an error.
  • +
+

Actions

+

Actions are named sequences of commands. Actions have a trigger used to determine when the action should occur. When an event + occurs which matches an action's trigger, that action is added to + the tail of a to-be-executed queue (unless it is already on the + queue).
+
+ Each action in the queue is dequeued in sequence. Each command in + an action is executed in sequence. Init handles other activities + (such as, device creation/destruction, property setting, process restarting) "between" the execution of the commands in activities. +

Actions take the form of:

+
+on <trigger>
+  <command>
+  <command>
+  <command>
+
+

Services

+

Services are programs that init launches and (optionally) restarts +when they exit.

+

Services take the form of:

+
+  service <name> <pathname> [ <argument> ]*
+  <option>
+  <option>
+  ...
+
+

Options

+

Options are modifiers to services that affect how and when init +runs a service. Options are described in the table below:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OptionDescription
disabledThis service will not automatically start with its class. It must be explicitly started by name.
socket <type> <name> <perm> [ <user> [ <group> ] ] Create a unix domain socket named /dev/socket/<name> and pass its fd to the launched process. Valid <type> values include dgram and stream. user and group default to 0.
user <username>Change to username before exec'ing this service. Currently defaults to root.
group <groupname> [ <groupname> ]* Change to groupname before exec'ing this service.  Additional  groupnames beyond the first, which is required, are used to set additional groups of the process (with setgroups()). Currently defaults to root.
capability [ <capability> ]+Set linux capability before exec'ing this service
oneshotDo not restart the service when it exits.
class <name>Specify a class name for the service.  All services in a named class must start and stop together. A service is considered of class "default" if one is not specified via the class option.
+

Triggers

+

Triggers are strings used to match certain kinds of events that cause an action to occur.

+ + + + + + + + + + + + + + + + + + + + + +
TriggerDescription
bootThis is the first trigger that occurs when init starts (after /init.conf is loaded).
<name>=<value>Triggers of this form occur when the property <name> is set to the specific value <value>.
device-added-<path>
+ device-removed-<path>
Triggers of these forms occur when a device node is added or removed.
service-exited-<name>Triggers of this form occur when the specified service exits.
+


+ Commands

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CommandDescription
exec <path> [ <argument> ]*Fork and execute a program (<path>). This will block until the program completes execution. Try to avoid exec. Unlike the builtin commands, it runs the risk of getting init "stuck".
export <name> <value>Set the environment variable <name> equal to <value> in the global environment (which will be inherited by all processes started after this command is executed).
ifup <interface>Bring the network interface <interface> online.
import <filename> Parse an init config file, extending the current configuration.
hostname <name>Set the host name.
class_start <serviceclass>Start all services of the specified class if they are not already running.
class_stop <serviceclass>Stop all services of the specified class if they are currently running.
domainname <name>Set the domain name.
insmod <path>Install the module at <path>.
mkdir <path>Make a directory at <path>.
mount <type> <device> <dir> [ <mountoption> ]*Attempt to mount the named device at the directory <dir> <device>. This may be of the form mtd@name to specify a mtd block device by name.
setkey- currenlty undefined -
setprop <name> <value>Set system property <name> to <value>.
setrlimit <resource> <cur> <max>Set the rlimit for a resource.
start <service>Start a service running if it is not already running.
stop <service>Stop a service from running if it is currently running.
symlink <target> <path>Create a symbolic link at <path> with the value <target>.
write <path> <string> [ <string> ]*Open the file at <path> and write one or more strings to it with write(2).
+

Properties

+ Init updates some system properties to provide some insight into
+ what it's doing:

+ + + + + + + + + + + + + + + + + +
PropertyDescription
init.actionEqual to the name of the action currently being executed or "" if none.
init.commandEqual to the command being executed or "" if none.
init.svc.<name>State of a named service ("stopped", "running", or "restarting").
+

Example init.conf

+

The following snippet is an incomplete example of the init.conf file, simply meant to give you an idea of what a proper configuration resembles.

+
+on boot
+  export PATH /sbin:/system/sbin:/system/bin
+  export LD_LIBRARY_PATH /system/lib
+
+  mkdir /dev
+  mkdir /proc
+  mkdir /sys
+
+
+  mount tmpfs tmpfs /dev
+  mkdir /dev/pts
+  mkdir /dev/socket
+  mount devpts devpts /dev/pts
+  mount proc proc /proc
+  mount sysfs sysfs /sys
+
+
+  write /proc/cpu/alignment 4
+
+
+  ifup lo
+
+
+  hostname localhost
+  domainname localhost
+
+
+  mount yaffs2 mtd@system /system
+  mount yaffs2 mtd@userdata /data
+
+
+  import /system/etc/init.conf
+
+
+  class_start default
+
+
+service adbd /sbin/adbd
+  user adb
+  group adb
+
+
+service usbd /system/bin/usbd -r
+  user usbd
+  group usbd
+  socket usbd 666
+
+
+service zygote /system/bin/app_process -Xzygote /system/bin --zygote
+  socket zygote 666
+
+
+service runtime /system/bin/runtime
+  user system
+  group system
+
+
+on device-added-/dev/compass
+  start akmd
+
+
+on device-removed-/dev/compass
+  stop akmd
+
+
+service akmd /sbin/akmd
+  disabled
+  user akmd
+  group akmd
+
diff --git a/pdk/docs/porting/build_cookbook.jd b/pdk/docs/porting/build_cookbook.jd new file mode 100755 index 000000000..d6190862a --- /dev/null +++ b/pdk/docs/porting/build_cookbook.jd @@ -0,0 +1,556 @@ +page.title=Build Cookbook +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

The Android Build Cookbook offers code snippets to help you quickly implement some common build tasks. For additional instruction, please see the other build documents in this section.

+

Building a simple APK

+
+  LOCAL_PATH := $(call my-dir)
+  include $(CLEAR_VARS)
+   
+  # Build all java files in the java subdirectory
+  LOCAL_SRC_FILES := $(call all-subdir-java-files)
+   
+  # Name of the APK to build
+  LOCAL_PACKAGE_NAME := LocalPackage
+   
+  # Tell it to build an APK
+  include $(BUILD_PACKAGE)
+
+

Building a APK that depends on a static .jar file

+
+  LOCAL_PATH := $(call my-dir)
+  include $(CLEAR_VARS)
+   
+  # List of static libraries to include in the package
+  LOCAL_STATIC_JAVA_LIBRARIES := static-library
+   
+  # Build all java files in the java subdirectory
+  LOCAL_SRC_FILES := $(call all-subdir-java-files)
+   
+  # Name of the APK to build
+  LOCAL_PACKAGE_NAME := LocalPackage
+   
+  # Tell it to build an APK
+  include $(BUILD_PACKAGE)
+
+

Building a APK that should be signed with the platform key

+
+  LOCAL_PATH := $(call my-dir)
+  include $(CLEAR_VARS)
+   
+  # Build all java files in the java subdirectory
+  LOCAL_SRC_FILES := $(call all-subdir-java-files)
+   
+  # Name of the APK to build
+  LOCAL_PACKAGE_NAME := LocalPackage
+   
+  LOCAL_CERTIFICATE := platform
+   
+  # Tell it to build an APK
+  include $(BUILD_PACKAGE)
+
+

Building a APK that should be signed with a specific vendor key

+
+  LOCAL_PATH := $(call my-dir)
+  include $(CLEAR_VARS)
+   
+  # Build all java files in the java subdirectory
+  LOCAL_SRC_FILES := $(call all-subdir-java-files)
+   
+  # Name of the APK to build
+  LOCAL_PACKAGE_NAME := LocalPackage
+   
+  LOCAL_CERTIFICATE := vendor/example/certs/app
+   
+  # Tell it to build an APK
+  include $(BUILD_PACKAGE)
+
+

Adding a prebuilt APK

+
+  LOCAL_PATH := $(call my-dir)
+  include $(CLEAR_VARS)
+   
+  # Module name should match apk name to be installed.
+  LOCAL_MODULE := LocalModuleName
+  LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
+  LOCAL_MODULE_CLASS := APPS
+  LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+   
+  include $(BUILD_PREBUILT)
+
+

Adding a Static Java Library

+
+  LOCAL_PATH := $(call my-dir)
+  include $(CLEAR_VARS)
+   
+  # Build all java files in the java subdirectory
+  LOCAL_SRC_FILES := $(call all-subdir-java-files)
+   
+  # Any libraries that this library depends on
+  LOCAL_JAVA_LIBRARIES := android.test.runner
+   
+  # The name of the jar file to create
+  LOCAL_MODULE := sample
+   
+  # Build a static jar file.
+  include $(BUILD_STATIC_JAVA_LIBRARY)
+
+

Android.mk Variables

+ +

These are the variables that you'll commonly see in Android.mk files, listed +alphabetically. First, a note on the variable naming:

+ +
    +
  • LOCAL_ - These variables are set per-module. They are cleared + by the include $(CLEAR_VARS) line, so you can rely on them + being empty after including that file. Most of the variables you'll use + in most modules are LOCAL_ variables.
  • +
  • PRIVATE_ - These variables are make-target-specific variables. That + means they're only usable within the commands for that module. It also + means that they're unlikely to change behind your back from modules that + are included after yours. This + link to the make documentation + describes more about target-specific variables. +
  • +
  • HOST_ and TARGET_ - These contain the directories + and definitions that are specific to either the host or the target builds. + Do not set variables that start with HOST_ or TARGET_ in your makefiles. +
  • +
  • BUILD_ and CLEAR_VARS - These contain the names of + well-defined template makefiles to include. Some examples are CLEAR_VARS + and BUILD_HOST_PACKAGE.
  • +
  • Any other name is fair-game for you to use in your Android.mk. However, + remember that this is a non-recursive build system, so it is possible that + your variable will be changed by another Android.mk included later, and be + different when the commands for your rule / module are executed.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription
LOCAL_AAPT_FLAGS
LOCAL_ACP_UNAVAILABLE
LOCAL_ADDITIONAL_JAVA_DIR
LOCAL_AIDL_INCLUDES
LOCAL_ALLOW_UNDEFINED_SYMBOLS
LOCAL_ARM_MODE
LOCAL_ASFLAGS
LOCAL_ASSET_DIR
LOCAL_ASSET_FILESIn Android.mk files that include $(BUILD_PACKAGE) set this +to the set of files you want built into your app. Usually:

+

LOCAL_ASSET_FILES += $(call find-subdir-assets)

LOCAL_BUILT_MODULE_STEM
LOCAL_C_INCLUDES

Additional directories to instruct the C/C++ compilers to look for header +files in. These paths are rooted at the top of the tree. Use +LOCAL_PATH if you have subdirectories of your own that you +want in the include paths. For example:

+

+LOCAL_C_INCLUDES += extlibs/zlib-1.2.3
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/src +

+

You should not add subdirectories of include to +LOCAL_C_INCLUDES, instead you should reference those files +in the #include statement with their subdirectories. For +example:

+

#include <utils/KeyedVector.h>
+not #include <KeyedVector.h>

LOCAL_CCIf you want to use a different C compiler for this module, set LOCAL_CC +to the path to the compiler. If LOCAL_CC is blank, the appropriate default +compiler is used.
LOCAL_CERTIFICATE
LOCAL_CFLAGSIf you have additional flags to pass into the C or C++ compiler, add +them here. For example:

+

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1

LOCAL_CLASSPATH
LOCAL_COMPRESS_MODULE_SYMBOLS
LOCAL_COPY_HEADERS

The set of files to copy to the install include tree. You must also +supply LOCAL_COPY_HEADERS_TO.

+

This is going away because copying headers messes up the error messages, and +may lead to people editing those headers instead of the correct ones. It also +makes it easier to do bad layering in the system, which we want to avoid. We +also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any +headers.

LOCAL_COPY_HEADERS_TO

The directory within "include" to copy the headers listed in +LOCAL_COPY_HEADERS to.

+

This is going away because copying headers messes up the error messages, and +may lead to people editing those headers instead of the correct ones. It also +makes it easier to do bad layering in the system, which we want to avoid. We +also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any +headers.

LOCAL_CPP_EXTENSIONIf your C++ files end in something other than ".cpp", +you can specify the custom extension here. For example: +

LOCAL_CPP_EXTENSION := .cc

+Note that all C++ files for a given module must have the same +extension; it is not currently possible to mix different extensions.
LOCAL_CPPFLAGSIf you have additional flags to pass into only the C++ compiler, add +them here. For example:

+

LOCAL_CPPFLAGS += -ffriend-injection

+LOCAL_CPPFLAGS is guaranteed to be after LOCAL_CFLAGS +on the compile line, so you can use it to override flags listed in +LOCAL_CFLAGS
LOCAL_CXXIf you want to use a different C++ compiler for this module, set LOCAL_CXX +to the path to the compiler. If LOCAL_CXX is blank, the appropriate default +compiler is used.
LOCAL_DX_FLAGS
LOCAL_EXPORT_PACKAGE_RESOURCES
LOCAL_FORCE_STATIC_EXECUTABLE

If your executable should be linked statically, set +LOCAL_FORCE_STATIC_EXECUTABLE:=true. There is a very short +list of libraries that we have in static form (currently only libc). This is +really only used for executables in /sbin on the root filesystem.

LOCAL_GENERATED_SOURCES

Files that you add to LOCAL_GENERATED_SOURCES will be +automatically generated and then linked in when your module is built. +See the Custom Tools template makefile for an +example.

LOCAL_INSTRUMENTATION_FOR
LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME
LOCAL_INTERMEDIATE_SOURCES
LOCAL_INTERMEDIATE_TARGETS
LOCAL_IS_HOST_MODULE
LOCAL_JAR_MANIFEST
LOCAL_JARJAR_RULES
LOCAL_JAVA_LIBRARIES

When linking Java apps and libraries, LOCAL_JAVA_LIBRARIES +specifies which sets of java classes to include. Currently there are +two of these: core and framework. +In most cases, it will look like this:

+

LOCAL_JAVA_LIBRARIES := core framework

+

Note that setting LOCAL_JAVA_LIBRARIES is not necessary +(and is not allowed) when building an APK with +"include $(BUILD_PACKAGE)". The appropriate libraries +will be included automatically.

LOCAL_JAVA_RESOURCE_DIRS
LOCAL_JAVA_RESOURCE_FILES
LOCAL_JNI_SHARED_LIBRARIES
LOCAL_LDFLAGS

You can pass additional flags to the linker by setting +LOCAL_LDFLAGS. Keep in mind that the order of parameters is +very important to ld, so test whatever you do on all platforms.

LOCAL_LDLIBS

LOCAL_LDLIBS allows you to specify additional libraries +that are not part of the build for your executable or library. Specify +the libraries you want in -lxxx format; they're passed directly to the +link line. However, keep in mind that there will be no dependency generated +for these libraries. It's most useful in simulator builds where you want +to use a library preinstalled on the host. The linker (ld) is a particularly +fussy beast, so it's sometimes necessary to pass other flags here if you're +doing something sneaky. Some examples:

+

LOCAL_LDLIBS += -lcurses -lpthread
+LOCAL_LDLIBS += -Wl,-z,origin +

LOCAL_MODULELOCAL_MODULE is the name of what's supposed to be generated +from your Android.mk. For exmample, for libkjs, the LOCAL_MODULE +is "libkjs" (the build system adds the appropriate suffix -- .so .dylib .dll). +For app modules, use LOCAL_PACKAGE_NAME instead of +LOCAL_MODULE.
LOCAL_MODULE_PATHInstructs the build system to put the module somewhere other than what's +normal for its type. If you override this, make sure you also set +LOCAL_UNSTRIPPED_PATH if it's an executable or a shared library +so the unstripped binary has somewhere to go. An error will occur if you forget +to.

+

See Putting modules elsewhere for more.

LOCAL_MODULE_STEM
LOCAL_MODULE_TAGS

Set LOCAL_MODULE_TAGS to any number of whitespace-separated +tags.

This variable controls what build flavors the package gets included in. For example:

+
    +
  • user: include this in user/userdebug builds
  • +
  • eng: include this in eng builds
  • +
  • tests: the target is a testing target and makes it available for tests
  • +
  • optional: don't include this
  • +
LOCAL_NO_DEFAULT_COMPILER_FLAGS
LOCAL_NO_EMMA_COMPILE
LOCAL_NO_EMMA_INSTRUMENT
LOCAL_NO_STANDARD_LIBRARIES
LOCAL_OVERRIDES_PACKAGES
LOCAL_PACKAGE_NAMELOCAL_PACKAGE_NAME is the name of an app. For example, +Dialer, Contacts, etc.
LOCAL_POST_PROCESS_COMMAND

For host executables, you can specify a command to run on the module +after it's been linked. You might have to go through some contortions +to get variables right because of early or late variable evaluation:

+

module := $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)
+LOCAL_POST_PROCESS_COMMAND := /Developer/Tools/Rez -d __DARWIN__ -t APPL\
+       -d __WXMAC__ -o $(module) Carbon.r +

+
LOCAL_PREBUILT_EXECUTABLESWhen including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to +executables that you want copied. They're located automatically into the +right bin directory.
LOCAL_PREBUILT_JAVA_LIBRARIES
LOCAL_PREBUILT_LIBSWhen including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to +libraries that you want copied. They're located automatically into the +right lib directory.
LOCAL_PREBUILT_OBJ_FILES
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES
LOCAL_PRELINK_MODULE
LOCAL_REQUIRED_MODULES

Set LOCAL_REQUIRED_MODULES to any number of whitespace-separated +module names, like "libblah" or "Email". If this module is installed, all +of the modules that it requires will be installed as well. This can be +used to, e.g., ensure that necessary shared libraries or providers are +installed when a given app is installed.

LOCAL_RESOURCE_DIR
LOCAL_SDK_VERSION
LOCAL_SHARED_LIBRARIESThese are the libraries you directly link against. You don't need to +pass transitively included libraries. Specify the name without the suffix:

+

LOCAL_SHARED_LIBRARIES := \
+     libutils \
+     libui \
+     libaudio \
+     libexpat \
+     libsgl +

LOCAL_SRC_FILESThe build system looks at LOCAL_SRC_FILES to know what source +files to compile -- .cpp .c .y .l .java. For lex and yacc files, it knows +how to correctly do the intermediate .h and .c/.cpp files automatically. If +the files are in a subdirectory of the one containing the Android.mk, prefix +them with the directory name:

+

LOCAL_SRC_FILES := \
+     file1.cpp \
+     dir/file2.cpp +

LOCAL_STATIC_JAVA_LIBRARIES
LOCAL_STATIC_LIBRARIESThese are the static libraries that you want to include in your module. +Mostly, we use shared libraries, but there are a couple of places, like +executables in sbin and host executables where we use static libraries instead. +

LOCAL_STATIC_LIBRARIES := \
+     libutils \
+     libtinyxml +

LOCAL_UNINSTALLABLE_MODULE
LOCAL_UNSTRIPPED_PATHInstructs the build system to put the unstripped version of the module +somewhere other than what's normal for its type. Usually, you override this +because you overrode LOCAL_MODULE_PATH for an executable or a +shared library. If you overrode LOCAL_MODULE_PATH, but not +LOCAL_UNSTRIPPED_PATH, an error will occur.

+

See Putting modules elsewhere for more.

LOCAL_WHOLE_STATIC_LIBRARIESThese are the static libraries that you want to include in your module without allowing +the linker to remove dead code from them. This is mostly useful if you want to add a static library +to a shared library and have the static library's content exposed from the shared library. +

LOCAL_WHOLE_STATIC_LIBRARIES := \
+     libsqlite3_android
+

LOCAL_YACCFLAGSAny flags to pass to invocations of yacc for your module. A known limitation +here is that the flags will be the same for all invocations of YACC for your +module. This can be fixed. If you ever need it to be, just ask.

+

LOCAL_YACCFLAGS := -p kjsyy

OVERRIDE_BUILT_MODULE_PATH
diff --git a/pdk/docs/porting/build_new_device.jd b/pdk/docs/porting/build_new_device.jd new file mode 100755 index 000000000..55b03553f --- /dev/null +++ b/pdk/docs/porting/build_new_device.jd @@ -0,0 +1,242 @@ +page.title=Configuring a New Product +pdk.version=1.0 +doc.type=porting +@jd:body + + + + + + +

Detailed Instructions

+ +

The steps below describe how to configure makefiles for new mobile devices and products running Android.

+
    +
  1. Create a company directory in //vendor/.
    +
    +  mkdir vendor/<company_name>
  2. +
  3. Create a products directory beneath the company directory you created in step 1.
    +
    +  mkdir vendor/<company_name>/products/
  4. +
  5. Create a product-specific makefile, called vendor/<company_name>/products/<first_product_name>.mk, that includes at least the following code:
    +
    +  $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
    +  #
    +  # Overrides
    +  PRODUCT_NAME := <first_product_name>
    +  PRODUCT_DEVICE := <board_name>
    +
  6. + Additional product-specific variables can be added to this Product Definition +file. +
  7. +
  8. In the products directory, create an AndroidProducts.mk file that point to (and is responsible for finding) the individual product make files.
    +
    +  #
    +  # This file should set PRODUCT_MAKEFILES to a list of product makefiles
    +  # to expose to the build system.  LOCAL_DIR will already be set to
    +  # the directory containing this file. 
    +  #
    +  # This file may not rely on the value of any variable other than
    +  # LOCAL_DIR; do not use any conditionals, and do not look up the
    +  # value of any variable that isn't set in this file or in a file that
    +  # it includes.
    +  #
    +  
    +  PRODUCT_MAKEFILES := \
    +    $(LOCAL_DIR)/first_product_name.mk \
  9. +
  10. Create a board-specific directory beneath your company directory that matches the PRODUCT_DEVICE variable <board_name> referenced in the product-specific make file above. This will include a make file that gets accessed by any product using this board.
    +
    +  mkdir vendor/<company_name>/<board_name>
  11. +
  12. Create a BoardConfig.mk file in the directory created in the previous step (vendor/<company_name>/<board_name>).
    +
    +  # These definitions override the defaults in config/config.make for <board_name>
    +  #
    +  # TARGET_NO_BOOTLOADER := false
    +  # TARGET_HARDWARE_3D := false 
    +  #
    +  TARGET_USE_GENERIC_AUDIO := true
  13. +
  14. If you wish to modify system properties, create a system.prop file in your <board_name> directory(vendor/<company_name>/<board_name>).
    +
    +  # system.prop for 
    +  # This overrides settings in the products/generic/system.prop file
    +  #
    +  # rild.libpath=/system/lib/libreference-ril.so
    +  # rild.libargs=-d /dev/ttyS0
  15. +
  16. Add a pointer to <second_product_name>.mk within products/AndroidProducts.mk.
    +
    +  PRODUCT_MAKEFILES := \
    +    $(LOCAL_DIR)/first_product_name.mk \
    +    $(LOCAL_DIR)/second_product_name.mk
  17. +
  18. An Android.mk file must be included in vendor/<company_name>/<board_name> with at least the following code:
    +
    +  # make file for new hardware  from 
    +  #
    +  LOCAL_PATH := $(call my-dir)
    +  #
    +  # this is here to use the pre-built kernel
    +  ifeq ($(TARGET_PREBUILT_KERNEL),)
    +  TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
    +  endif
    +  #
    +  file := $(INSTALLED_KERNEL_TARGET)
    +  ALL_PREBUILT += $(file)
    +  $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
    +		$(transform-prebuilt-to-target)
    +  #
    +  # no boot loader, so we don't need any of that stuff..  
    +  #
    +  LOCAL_PATH := vendor/<company_name>/<board_name>
    +  #
    +  include $(CLEAR_VARS)
    +  #
    +  # include more board specific stuff here? Such as Audio parameters.      
    +  #
    + +
  19. +
  20. To create a second product for the same board, create a second product-specific make file called vendor/company_name/products/<second_product_name>.mk that includes:
    +
    +  $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
    +  #
    +  # Overrides
    +  PRODUCT_NAME := <second_product_name>
    +  PRODUCT_DEVICE := <board_name>
  21. +
+

By now, you should have two new products, called <first_product_name> and <second_product_name> associated with <company_name>. To verify that a product is properly configured (<first_product_name>, for example), execute the following:
+

+  . build/envsetup.sh
+  make PRODUCT-<first_product_name>-user
+
+

You should find new build binaries located in /out/target/product/<board_name>. + + +

New Product File Tree

+ +

The file tree below illustrates what your own system should look like after completing the steps above.

+

+

    +
  • <company_name>
  • +
      +
    • <board_name>
    • +
        +
      • Android.mk
      • +
      • product_config.mk
      • +
      • system.prop
      • +
      +
    • products
    • +
        +
      • AndroidProducts.mk
      • +
      • <first_product_name>.mk
      • +
      • <second_product_name>.mk
      • +
      +
    +
+

+ +

Product Definition Files

+ +

Product-specific variables are defined in product definition files. A product definition file can inherit from other product definition files, thus reducing the need to copy and simplifying maintenance.

+

Variables maintained in a product definition files include:

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescriptionExample
PRODUCT_NAMEEnd-user-visible name for the overall product. Appears in the "About the phone" info.
PRODUCT_MODELEnd-user-visible name for the end product
PRODUCT_LOCALESA space-separated list of two-letter language code, two-letter country code pairs that describe several settings for the user, such as the UI language and time, date and currency formatting. The first locale listed in PRODUCT_LOCALES is is used if the locale has never been set before.en_GB de_DE es_ES fr_CA
PRODUCT_PACKAGESLists the APKs to install.Calendar Contacts
PRODUCT_DEVICEName of the industrial designdream
PRODUCT_MANUFACTURERName of the manufactureracme
PRODUCT_BRANDThe brand (e.g., carrier) the software is customized for, if any
PRODUCT_PROPERTY_OVERRIDESList of property assignments in the format "key=value"
PRODUCT_COPY_FILESList of words like source_path:destination_path. The file at the source path should be copied to the destination path when building this product. The rules for the copy steps are defined in config/Makefile
PRODUCT_OTA_PUBLIC_KEYSList of OTA public keys for the product
PRODUCT_POLICYIndicate which policy this product should use
PRODUCT_PACKAGE_OVERLAYSIndicate whether to use default resources or add any product specific overlaysvendor/acme/overlay
PRODUCT_CONTRIBUTORS_FILEHTML file containing the contributors to the project.
PRODUCT_TAGSlist of space-separated words for a given product
+ +

+

The snippet below illustrates a typical product definition file.

+
+$(call inherit-product, build/target/product/generic.mk)
+
+#Overrides
+PRODUCT_NAME := MyDevice
+PRODUCT_MANUFACTURER := acme
+PRODUCT_BRAND := acme_us
+PRODUCT_LOCALES := en_GB es_ES fr_FR
+PRODUCT_PACKAGE_OVERLAYS := vendor/acme/overlay
+
+
+ + diff --git a/pdk/docs/porting/build_system.jd b/pdk/docs/porting/build_system.jd new file mode 100755 index 000000000..e5811bd4f --- /dev/null +++ b/pdk/docs/porting/build_system.jd @@ -0,0 +1,270 @@ +page.title=Android Build System +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

Android uses a custom build system to generate tools, binaries, and documentation. This document provides an overview of Android's build system and instructions for doing a simple build.

+

Android's build system is make based and requires a recent version of GNU Make (note that Android uses advanced features of GNU Make that may not yet appear on the GNU Make web site). Before continuing, check your version of make by running % make -v. If you don't have version 3.80 or greater, you need to upgrade your version of make.

+ + + + +

Understanding the makefile

+ +

A makefile defines how to build a particular application. Makefiles typically include all of the following elements:

+
    +
  1. Name: Give your build a name (LOCAL_MODULE := <build_name>).
  2. +
  3. Local Variables: Clear local variables with CLEAR_VARS (include $(CLEAR_VARS)).
  4. +
  5. Files: Determine which files your application depends upon (LOCAL_SRC_FILES := main.c).
  6. +
  7. Tags: Define tags, as necessary (LOCAL_MODULE_TAGS := eng development).
  8. +
  9. Libraries: Define whether your application links with other libraries (LOCAL_SHARED_LIBRARIES := cutils).
  10. +
  11. Template file: Include a template file to define underlining make tools for a particular target (include $(BUILD_EXECUTABLE)).
  12. +
+ +

The following snippet illustrates a typical makefile.

+
+LOCAL_PATH := $(my-dir)
+include $(CLEAR_VARS)
+LOCAL_MODULE := <buil_name>
+LOCAL_SRC_FILES := main.c
+LOCAL_MODULE_TAGS := eng development
+LOCAL_SHARED_LIBRARIES := cutils
+include $(BUILD_EXECUTABLE)
+(HOST_)EXECUTABLE, (HOST_)JAVA_LIBRARY, (HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,
+  (HOST_)STATIC_LIBRARY, PACKAGE, JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,
+  COPY_HEADERS, KEY_CHAR_MAP
+
+

The snippet above includes artificial line breaks to maintain a print-friendly document.

+ + +

Layers

+ +

The build hierarchy includes the abstraction layers described in the table below.

+ +

Each layer relates to the one above it in a one-to-many relationship. For example, an arch can have more than one board and each board can have more than one device. You may define an element in a given layer as a specialization of an element in the same layer, thus eliminating copying and simplifying maintenance.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LayerExampleDescription
ProductmyProduct, myProduct_eu, myProduct_eu_fr, j2, sdkThe product layer defines a complete specification of a shipping product, defining which modules to build and how to configure them. You might offer a device in several different versions based on locale, for example, or on features such as a camera.
DevicemyDevice, myDevice_eu, myDevice_eu_liteThe device layer represents the physical layer of plastic on the device. For example, North American devices probably include QWERTY keyboards whereas devices sold in France probably include AZERTY keyboards. Peripherals typically connect to the device layer.
Boardsardine, trout, goldfish The board layer represents the bare schematics of a product. You may still connect peripherals to the board layer.
Archarm (arm5te) (arm6), x86, 68k The arch layer describes the processor running on your board.
+ +

Building the Android Platform

+ +

This section describes how to build the default version of Android. Once you are comfortable with a generic build, then you can begin to modify Android for your own target device.

+ + +

Device Code

+ +

To do a generic build of android, source build/envsetup.sh, which contains necessary variable and function definitions, as described below.

+
+% cd $TOP
+
+% . build/envsetup.sh
+
+# pick a configuration using choosecombo
+% choosecombo
+
+% make -j4 PRODUCT-generic-user
+
+

You can also replace user with eng for a debug engineering build:

+ +
+% make -j4 PRODUCT-generic-eng
+
+ +

These Build Variants differ in terms of debug options and packages installed. + + +

Cleaning Up

+ +

Execute % m clean to clean up the binaries you just created. You can also execute % m clobber to get rid of the binaries of all combos. % m clobber is equivalent to removing the //out/ directory where all generated files are stored.

+ + +

Speeding Up Rebuilds

+ +

The binaries of each combo are stored as distinct sub-directories of //out/, making it possible to quickly switch between combos without having to recompile all sources each time.

+

However, performing a clean rebuild is necessary if the build system doesn't catch changes to environment variables or makefiles. If this happens often, you should define the USE_CCACHE environment variable as shown below:

+
+% export USE_CCACHE=1
+
+

Doing so will force the build system to use the ccache compiler cache tool, which reduces recompiling all sources.

+ +

ccache binaries are provided in //prebuilt/... and don't need to get installed on your system.

+ + +

Troubleshooting

+ +

The following error is likely caused by running an outdated version of Java.

+
+device Dex: core  UNEXPECTED TOP-LEVEL ERROR:
+java.lang.NoSuchMethodError: method java.util.Arrays.hashCode with
+signature ([Ljava.lang.Object;)I was not found.
+  at com.google.util.FixedSizeList.hashCode(FixedSizeList.java:66)
+  at com.google.rop.code.Rop.hashCode(Rop.java:245)
+  at java.util.HashMap.hash(libgcj.so.7)
+[...]
+
+

dx is a Java program that uses facilities first made available in Java version 1.5. Check your version of Java by executing % java -version in the shell you use to build. You should see something like:

+
+java version "1.5.0_07"
+Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-164)
+Java HotSpot(TM) Client VM (build 1.5.0_07-87, mixed mode, sharing)
+
+

If you do have Java 1.5 or later and your receive this error, verify that you have properly updated your PATH variable.

+ + +

Building the Android Kernel

+ +

This section describes how to build Android's default kernel. Once you are comfortable with a generic build, then you can begin to modify Android drivers for your own target device.

+ + +

To build the kernel base, switch to the device directory (/home/joe/android/device) in order to establish variables and run: +

+% . build/envsetup.sh
+% partner_setup generic
+
+

Then switch to the kernel directory /home/joe/android/kernel. + + +

Checking Out a Branch

+ +

The default branch is always android. To check out a different branch, execute the following:

+ +
+% git checkout --track -b android-mydevice origin/android-mydevice
+  //Branch android-mydevice set up to track remote branch
+% refs/remotes/origin/android-mydevice.
+  //Switched to a new branch "android-mydevice"
+
+ +

To simplify code management, give your local branch the same name as the remote branch it is tracking (as illustrated in the snippet above). Switch between branches by executing % git checkout <branchname>.

+ + +

Verifying Location

+ +

Find out which branches exist (both locally and remotely) and which one is active (marked with an asterisk) by executing the following:

+
+% git branch -a
+  android
+* android-mydevice
+  origin/HEAD
+  origin/android
+  origin/android-mydevice
+  origin/android-mychipset
+
+

To only see local branches, omit the -a flag.

+ + +

Building the Kernel

+ +

To build the kernel, execute:

+
+% make -j4
+
+ +

Build Variants

+ +

+When building for a particular product, it's often useful to have minor +variations on what is ultimately the final release build. These are the +currently-defined build variants: +

+ + + + + + + + + + + + + + +
+ eng + + This is the default flavor. A plain make is the + same as make eng. +
    +
  • Installs modules tagged with: eng, debug, + user, and/or development. +
  • Installs non-APK modules that have no tags specified. +
  • Installs APKs according to the product definition files, in + addition to tagged APKs. +
  • ro.secure=0 +
  • ro.debuggable=1 +
  • ro.kernel.android.checkjni=1 +
  • adb is enabled by default. +
+ user + + make user +

+ This is the flavor intended to be the final release bits. +

    +
  • Installs modules tagged with user.
  • +
  • Installs non-APK modules that have no tags specified.
  • +
  • Installs APKs according to the product definition files; tags + are ignored for APK modules.
  • +
  • ro.secure=1
  • +
  • ro.debuggable=0
  • +
  • adb is disabled by default.
  • +
+ userdebug + + make userdebug +

+ The same as user, except: +

    +
  • Also installs modules tagged with debug. +
  • ro.debuggable=1 +
  • adb is enabled by default. +
+ +

+If you build one flavor and then want to build another, you should run +make installclean between the two makes to guarantee that +you don't pick up files installed by the previous flavor. make +clean will also suffice, but it takes a lot longer. +

diff --git a/pdk/docs/porting/camera.jd b/pdk/docs/porting/camera.jd new file mode 100755 index 000000000..0571fb5ac --- /dev/null +++ b/pdk/docs/porting/camera.jd @@ -0,0 +1,76 @@ +page.title=Camera +pdk.version=1.0 +doc.type=porting +@jd:body + + + +

Android's camera subsystem connects the camera application to the application framework and user space libraries, which in turn communicate with the camera hardware layer that operates the physical camera.

+

The diagram below illustrates the structure of the camera subsystem.

+

+ + +

Building a Camera Library

+ +

To implement a camera driver, create a shared library that implements the interface defined in CameraHardwareInterface.h. You must name your shared library libcamera.so so that it will get loaded from /system/lib at runtime. Place libcamera sources and Android.mk in vendor/acme/chipset_or_board/libcamera/.

+

The following stub Android.mk file ensures that libcamera compiles and links to the appropriate libraries:

+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libcamera
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils \
+    librpc \
+    liblog
+
+LOCAL_SRC_FILES += MyCameraHardware.cpp
+
+LOCAL_CFLAGS +=
+
+LOCAL_C_INCLUDES +=
+
+LOCAL_STATIC_LIBRARIES += \
+    libcamera-common \
+    libclock-rpc \
+    libcommondefs-rpc
+
+include $(BUILD_SHARED_LIBRARY)
+
+ + +

Sequence Diagrams

+ + + +

Preview

+ +

The following diagram illustrates the sequence of function calls and actions necessary for your camera to preview.

+ + + +

Taking a Picture

+ +

The following diagram illustrates the sequence of function calls and actions necessary for your camera to take a picture.

+ + + +

Interface

+ + + +

Note: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, click here.

+ + + diff --git a/pdk/docs/porting/customization.jd b/pdk/docs/porting/customization.jd new file mode 100755 index 000000000..7c11a8eb8 --- /dev/null +++ b/pdk/docs/porting/customization.jd @@ -0,0 +1,321 @@ +page.title=Customization +pdk.version=1.0 +doc.type=porting +@jd:body + + + + + +

Boot Screen Customization

+ +

At startup, Android displays a splashscreen image while booting the device. Do the following if you wish to modify the default splash screen:

+

+

  1. Create a 320x480 image, splashscreen.jpg in this example.
  2. +
  3. Using ImageMagick, convert your .jpg file to .r format: +
     
    +convert screen.jpg screen.r
    +
    +
  4. +
  5. Use the rgb2565 application to convert the image to 565 format: +
     
    +rgb2565 < screen.rgb > screen.565
    +
    +
  6. +
  7. Use fastboot to flash the image to the device: +
     
    +fastboot flash splash1 screen.565
    +
    +
  8. +
+ + +

Network Customization Platform

+ + + +

Network Configuration

+ +

Android stores network configurations as a resource that gets compiled into binary at form at build time. The XML representation of this resource is located at //android/frameworks/base/core/res/res/xml/apns.xml. This file does not include any configured APNs. You should not modify this file, but instead configure APNs by product at build time (see Build-time APN Configuration below).

+

Each network configuration is stored in an XML element following this syntax:

+
 
+<apn carrier="T-Mobile US"
+         mcc="310"
+         mnc="260"
+         apn=" wap.voicestream.com"
+         user="none"
+         server="*"
+         password="none"
+         proxy=" 216.155.165.50"
+         port="8080"
+         mmsc="http://216.155.174.84/servlets/mms"
+/>
+
+ + +

Build-time APN configuration

+ +

To set the APN configuration for a particular product target, add an apns-conf.xml file to the product configuration (do not modify the default platform APNs). This allows multiple products, all with different APNs, to be built off the same code base.

+ +

To configure APNs at the product level, add a line to the product configuration file like the example below (vendor/<vendor_name>/products/myphone-us.mk):

+ +
 
+PRODUCT_COPY_FILES := vendor/acme/etc/apns-conf-us.xml:system/etc/apns-conf.xml
+
+ + + +

APN configuration at run time

+ +

At runtime, the Android reads APNs from the following file:

+
 
+system/etc/apns-conf.xml
+
+ +

Android supports the following run-time network configuration methods to choose the appropriate APN from the list of configured APNs:

+

    +
  • Automatic Configuration: At boot time, Android determines the correct network configuration based on the MCC and MNC from the SIM card and automatically configure all network settings.
  • +
  • Manual Configuration: The platform will also support runtime (user) manual selection of network settings by name, for example, "Company Name US," and will support manual network configuration entry.
  • +
  • WAP / SMS Push Configuration: The network configurations are standard Android resources. You can upgrade a resource at runtime by installing a new system resource APK package. It will be possible to develop a network configuration service which listens to a specific binary SMS port for binary SMS messages containing the network configurations. NOTE: The implementation will likely be network operator dependent due to inconsistent SMS ports, binary SMS formats, etc.
  • +
+ + + + +

Customizing pre-loaded applications

+ +

To customize the list of Android packages for a particular product (applications, input methods, providers, services, etc.), set PRODUCT_PACKAGES property in the product configuration, as illustrated below:

+ +
 
+PRODUCT_PACKAGES := \
+ <company_name>Mail \
+    <company_name>IM \
+ <company_name>HomeScreen \
+ <company_name>Maps \
+ <company_name>SystemUpdater
+
+ +

Package names should correspond to the LOCAL_PACKAGE_NAME specified for each package's build target. For example, the Android.mk build target for <company_name>Mail, referenced above, could look like this: + +

 
+# Build the <company_name>Mail application
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+ 
+LOCAL_MODULE_TAGS := user development
+ 
+LOCAL_SRC_FILES := $(call all-java-files-under,src,tests)
+ 
+LOCAL_STATIC_JAVA_LIBRARIES := <company_name>login-client
+ 
+# Specify the package name
+LOCAL_PACKAGE_NAME := <company_name>Mail
+ 
+# Specify the certificate used to sign the application
+LOCAL_CERTIFICATE := vendor/<company_name>/certs/app
+ 
+include $(BUILD_PACKAGE)
+ 
+# Build the login client static library
+include $(LOCAL_PATH)/client/Android.mk
+
+ +

Note that the home screen is just an Android application that can be replaced entirely or customized by changing source code and application resources (Java source, layouts, etc.).

+ + + +

Customizing browser bookmarks

+ +

Browser bookmarks are stored as string resources in the Browser application: //android/packages/apps/Browser/res/values/strings.xml. Bookmarks are defined as simple value string arrays called "bookmarks". Each bookmark entry is stored as a pair of array values; the first represents the bookmark name and the second the bookmark URL. For example:

+
 
+<!-- Bookmarks -->
+<string-array name="bookmarks">
+    <item>Google</item>
+    <item>http://www.google.com/</item>
+    <item>Yahoo!</item>
+    <item>http://www.yahoo.com/</item>
+    <item>MSN</item>
+    <item>http://www.msn.com/</item>
+    <item>MySpace</item>
+    <item>http://www.myspace.com/</item>
+    <item>Facebook</item>
+    <item>http://www.facebook.com/</item>
+    <item>Wikipedia</item>
+    <item>http://www.wikipedia.org/</item>
+    <item>eBay</item>
+    <item>http://www.ebay.com/</item>
+    <item>CNN</item>
+    <item>http://www.cnn.com/</item>
+    <item>New York Times</item>
+    <item>http://www.nytimes.com/</item>
+    <item>ESPN</item>
+    <item>http://espn.go.com/</item>
+    <item>Amazon</item>
+    <item>http://www.amazon.com/</item>
+    <item>Weather Channel</item>
+    <item>http://www.weather.com/</item>
+    <item>BBC</item>
+    <item>http://www.bbc.co.uk/</item>
+</string-array>
+
+

Like and Android application resource, the platform will load alternate resources based on the platform configuration values. See Resources and Internationalization in the Android SDK for details. To configure bookmarks for a specific mobile network operator, place your customized bookmarks in a separate strings.xml file and place it under a Mobile Network Code (MNO) specific resource folder. For example, Browser/res/values-mccXXX-mncYYY/strings.xml where XXX and YYY represent the three-digit MCC and two to three digit MNC values.

+

Android loads any configuration-specific resources as override values for the default values, so it is only necessary to include the bookmarks string-array values in this file.

+ + + + +

Email Provider Customization

+ +

The default email provider settings are stored as string resources in the Email application (//android/packages/apps/Email/res/xml/providers.xml) as illustrated below.

+

<providers>

+
 
+<!-- Gmail variants -->
+    <provider id="gmail" label="Gmail" domain="gmail.com">
+        <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/>
+        <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/>
+    </provider>
+    <provider id="googlemail" label="Google Mail" domain="googlemail.com">
+        <incoming uri="imap+ssl+://imap.googlemail.com" username="$email"/>
+        <outgoing uri="smtp+ssl+://smtp.googlemail.com" username="$email"/>
+    </provider>
+    <provider id="google" label="Google" domain="google.com">
+        <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/>
+        <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/>
+    </provider>
+    <provider id="android" label="Android" domain="android.com">
+        <incoming uri="imap+ssl+://imap.gmail.com" username="$email"/>
+        <outgoing uri="smtp+ssl+://smtp.gmail.com" username="$email"/>
+    </provider>

+ + <!-- Common US providers --> + + <provider id="aim" label="AIM" domain="aim.com"> + <incoming uri="imap://imap.aim.com" label="IMAP" username="$email"/> + <outgoing uri="smtp://smtp.aim.com:587" username="$email"/> + </provider> + <provider id="aol" label="AOL" domain="aol.com"> + <incoming uri="imap://imap.aol.com" label="IMAP" username="$email"/> + <outgoing uri="smtp://smtp.aol.com:587" username="$email"/> + </provider> + <provider id="comcast" label="Comcast" domain="comcast.net"> + <incoming uri="pop3+ssl+://mail.comcast.net" username="$user"/> + <outgoing uri="smtp+ssl+://smtp.comcast.net" username="$user"/> + </provider> + <provider id="compuserve" label="CompuServe" domain="cs.com"> + <incoming uri="imap://imap.cs.com" username="$user"/> + <outgoing uri="smtp://smtp.cs.com" username="$user"/> + </provider> + <provider id="dotmac" label=".Mac" domain="mac.com"> + <incoming uri="imap+tls://mail.mac.com" username="$email"/> + <outgoing uri="smtp+tls://smtp.mac.com" username="$email"/> + </provider> + <provider id="earthlink" label="Earthlink" domain="earthlink.net"> + <incoming uri="pop3://pop.earthlink.net" username="$email"/> + <outgoing uri="smtp://smtpauth.earthlink.net:587" username="$email"/> + </provider> + <provider id="juno" label="Juno" domain="juno.com"> + <incoming uri="pop3://pop.juno.com" username="$user"/> + <outgoing uri="smtp://smtp.juno.com" username="$user"/> + </provider> + <provider id="live" label="Windows Live Hotmail Plus" domain="live.com" note="@string/provider_note_live"> + <incoming uri="pop3+ssl+://pop3.live.com" username="$email"/> + <outgoing uri="smtp+tls+://smtp.live.com" username="$email"/> + </provider> + <provider id="hotmail" label="Windows Live Hotmail Plus" domain="hotmail.com" note="@string/provider_note_live"> + <incoming uri="pop3+ssl+://pop3.live.com" username="$email"/> + <outgoing uri="smtp+tls+://smtp.live.com" username="$email"/> + </provider> + <provider id="msn" label="Windows Live Hotmail Plus" domain="msn.com" note="@string/provider_note_live"> + <incoming uri="pop3+ssl+://pop3.live.com" username="$email"/> + <outgoing uri="smtp+tls+://smtp.live.com" username="$email"/> + </provider> + <provider id="mobileme" label="MobileMe" domain="me.com"> + <incoming uri="imap+tls://mail.me.com" username="$email"/> + <outgoing uri="smtp+tls://smtp.me.com" username="$email"/> + </provider> + <provider id="netzero" label="NetZero" domain="netzero.com"> + <incoming uri="pop3://pop.netzero.com" username="$user"/> + <outgoing uri="smtp://smtp.netzero.com" username="$user"/> + </provider> + <provider id="sbcglobal" label="SBC Global" domain="sbcglobal.net"> + <incoming uri="pop3://pop.sbcglobal.yahoo.com" username="$email"/> + <outgoing uri="smtp://smtp.sbcglobal.yahoo.com" username="$email"/> + </provider> + <provider id="verizon" label="Verizon" domain="verizon.net"> + <incoming uri="pop3://incoming.verizon.net" username="$user"/> + <outgoing uri="smtp://outgoing.verizon.net" username="$user"/> + </provider> + <provider id="yahoo" label="Yahoo Plus" domain="yahoo.com" note="@string/provider_note_yahoo"> + <incoming uri="pop3+ssl+://plus.pop.mail.yahoo.com" username="$user"/> + <outgoing uri="smtp+ssl+://plus.smtp.mail.yahoo.com" username="$user"/> + </provider> + + <!-- Common UK providers --> + + <provider id="aol-uk" label="AOL" domain="aol.co.uk"> + <incoming uri="imap+ssl+://imap.uk.aol.com" label="IMAP" username="$user"/> + <outgoing uri="smtp+ssl+://smtp.uk.aol.com" username="$user"/> + </provider> + <provider id="bt" label="BT Internet" domain="btinternet.com"> + <incoming uri="pop3://mail.btinternet.com" username="$email"/> + <outgoing uri="smtp://mail.btinternet.com" username=""/> + </provider> + <provider id="tiscali" label="Tiscali" domain="tiscali.co.uk"> + <incoming uri="pop3://pop.tiscali.co.uk" username="$email"/> + <outgoing uri="smtp://smtp.tiscali.co.uk" username="$email:wq"/> + </provider> + <provider id="yahoo-uk" label="Yahoo" domain="yahoo.co.uk" note="@string/provider_note_yahoo_uk"> + <incoming uri="pop3+ssl+://pop.mail.yahoo.co.uk" username="$user"/> + <outgoing uri="smtp+ssl+://smtp.mail.yahoo.co.uk" username="$user"/> + </provider> + + <!-- Common Germany providers --> + + <provider id="freenet" label="Freenet" domain="freenet.de"> + <incoming uri="pop3://mx.freenet.de" username="$user"/> + <outgoing uri="smtp+ssl://mx.freenet.de" username="$email"/> + </provider> + <provider id="gmx" label="GMX" domain="gmx.de"> + <incoming uri="pop3+tls://pop.gmx.net" username="$email"/> + <outgoing uri="smtp+tls://mail.gmx.net" username="$email"/> + </provider> + <provider id="T-Online" label="T-Online" domain="t-online.de" note="@string/provider_note_t_online"> + <incoming uri="pop3://popmail.t-online.de" username="$email"/> + <outgoing uri="smtp://smtpmail.t-online.de" username="$email"/> + </provider> + <provider id="web.de" label="Web.de" domain="web.de"> + <incoming uri="pop3+tls://pop3.web.de" username="$user"/> + <outgoing uri="smtp+tls://smtp.web.de" username="$user"/> + </provider> +</providers> +
+

As with all Android application resources, the platform will load alternate resources based on the platform configuration values. See Resources and Internationalization in the Android SDK for details. To configure email providers for a specific mobile network operator, place the customized providers in a separate providers.xml file and place it under a Mobile Network Code (MNO) specific resource folder. For example, Email/res/xml-mccXXX-mncYYY/providers.xml where XXX and YYY represent the three-digit MCC and two to three digit MNC values.

+ + + +

Platform Themes

+ + + +

Themes and Styles

+ +

System level styles are defined in //android/framework/base/core/res/res/values/styles.xml.

+ + +

Animations

+ +

Android supports configurable animations for window and view transitions. System-level animations are defined in XML in global resource files located in //android/framework/base/core/res/res/anim/.

+ diff --git a/pdk/docs/porting/dalvik.jd b/pdk/docs/porting/dalvik.jd new file mode 100755 index 000000000..50b749903 --- /dev/null +++ b/pdk/docs/porting/dalvik.jd @@ -0,0 +1,355 @@ +page.title=Dalvik +pdk.version=1.0 +doc.type=porting +@jd:body + +
+ +
+ +

+The Dalvik virtual machine is intended to run on a variety of platforms. +The baseline system is expected to be a variant of UNIX (Linux, BSD, Mac +OS X) running the GNU C compiler. Little-endian CPUs have been exercised +the most heavily, but big-endian systems are explicitly supported. +

+There are two general categories of work: porting to a Linux system +with a previously unseen CPU architecture, and porting to a different +operating system. This document covers the former. +

+ + +

Core Libraries

+ +

+The native code in the core libraries (chiefly dalvik/libcore, +but also dalvik/vm/native) is written in C/C++ and is expected +to work without modification in a Linux environment. Much of the code +comes directly from the Apache Harmony project. +

+The core libraries pull in code from many other projects, including +OpenSSL, zlib, and ICU. These will also need to be ported before the VM +can be used. +

+ + +

JNI Call Bridge

+ +

+Most of the Dalvik VM runtime is written in portable C. The one +non-portable component of the runtime is the JNI call bridge. Simply put, +this converts an array of integers into function arguments of various +types, and calls a function. This must be done according to the C calling +conventions for the platform. The task could be as simple as pushing all +of the arguments onto the stack, or involve complex rules for register +assignment and stack alignment. +

+To ease porting to new platforms, the +open-source FFI library (Foreign Function Interface) is used when a +custom bridge is unavailable. FFI is not as fast as a native implementation, +and the optional performance improvements it does offer are not used, so +writing a replacement is a good first step. +

+The code lives in dalvik/vm/arch/*, with the FFI-based version +in the "generic" directory. There are two source files for each architecture. +One defines the call bridge itself: +

+void dvmPlatformInvoke(void* pEnv, ClassObject* clazz, int argInfo, +int argc, const u4* argv, const char* signature, void* func, +JValue* pReturn) +

+This will invoke a C/C++ function declared: +

+ return_type func(JNIEnv* pEnv, Object* this [, args])
+
or (for a "static" method):
+ return_type func(JNIEnv* pEnv, ClassObject* clazz [, args]) +

+The role of dvmPlatformInvoke is to convert the values in +argv into C-style calling conventions, call the method, and +then place the return type into pReturn (a union that holds +all of the basic JNI types). The code may use the method signature +(a DEX "shorty" signature, with one character for the return type and one +per argument) to determine how to handle the values. +

+The other source file involved here defines a 32-bit "hint". The hint +is computed when the method's class is loaded, and passed in as the +"argInfo" argument. The hint can be used to avoid scanning the ASCII +method signature for things like the return value, total argument size, +or inter-argument 64-bit alignment restrictions. +

+ +

Interpreter

+ +

+The Dalvik runtime includes two interpreters, labeled "portable" and "fast". +The portable interpreter is largely contained within a single C function, +and should compile on any system that supports gcc. (If you don't have gcc, +you may need to disable the "threaded" execution model, which relies on +gcc's "goto table" implementation; look for the THREADED_INTERP define.) +

+The fast interpreter uses hand-coded assembly fragments. If none are +available for the current architecture, the build system will create an +interpreter out of C "stubs". The resulting "all stubs" interpreter is +quite a bit slower than the portable interpreter, making "fast" something +of a misnomer. +

+The fast interpreter is enabled by default. On platforms without native +support, you may want to switch to the portable interpreter. This can +be controlled with the dalvik.vm.execution-mode system +property. For example, if you: +

+adb shell "echo dalvik.vm.execution-mode = int:portable >> /data/local.prop" +

+and reboot, the Android app framework will start the VM with the portable +interpreter enabled. +

+ + +

Mterp Interpreter Structure

+ +

+There may be significant performance advantages to rewriting the +interpreter core in assembly language, using architecture-specific +optimizations. In Dalvik this can be done one instruction at a time. +

+The simplest way to implement an interpreter is to have a large "switch" +statement. After each instruction is handled, the interpreter returns to +the top of the loop, fetches the next instruction, and jumps to the +appropriate label. +

+An improvement on this is called "threaded" execution. The instruction +fetch and dispatch are included at the end of every instruction handler. +This makes the interpreter a little larger overall, but you get to avoid +the (potentially expensive) branch back to the top of the switch statement. +

+Dalvik mterp goes one step further, using a computed goto instead of a goto +table. Instead of looking up the address in a table, which requires an +extra memory fetch on every instruction, mterp multiplies the opcode number +by a fixed value. By default, each handler is allowed 64 bytes of space. +

+Not all handlers fit in 64 bytes. Those that don't can have subroutines +or simply continue on to additional code outside the basic space. Some of +this is handled automatically by Dalvik, but there's no portable way to detect +overflow of a 64-byte handler until the VM starts executing. +

+The choice of 64 bytes is somewhat arbitrary, but has worked out well for +ARM and x86. +

+In the course of development it's useful to have C and assembly +implementations of each handler, and be able to flip back and forth +between them when hunting problems down. In mterp this is relatively +straightforward. You can always see the files being fed to the compiler +and assembler for your platform by looking in the +dalvik/vm/mterp/out directory. +

+The interpreter sources live in dalvik/vm/mterp. If you +haven't yet, you should read dalvik/vm/mterp/README.txt now. +

+ + +

Getting Started With Mterp

+ +

+Getting started: +

    +
  1. Decide on the name of your architecture. For the sake of discussion, +let's call it myarch. +
  2. Make a copy of dalvik/vm/mterp/config-allstubs to +dalvik/vm/mterp/config-myarch. +
  3. Create a dalvik/vm/mterp/myarch directory to hold your +source files. +
  4. Add myarch to the list in +dalvik/vm/mterp/rebuild.sh. +
  5. Make sure dalvik/vm/Android.mk will find the files for +your architecture. If $(TARGET_ARCH) is configured this +will happen automatically. +
+

+You now have the basic framework in place. Whenever you make a change, you +need to perform two steps: regenerate the mterp output, and build the +core VM library. (It's two steps because we didn't want the build system +to require Python 2.5. Which, incidentally, you need to have.) +

    +
  1. In the dalvik/vm/mterp directory, regenerate the contents +of the files in dalvik/vm/mterp/out by executing +./rebuild.sh. Note there are two files, one in C and one +in assembly. +
  2. In the dalvik directory, regenerate the +libdvm.so library with mm. You can also use +make libdvm from the top of the tree. +
+

+This will leave you with an updated libdvm.so, which can be pushed out to +a device with adb sync or adb push. If you're +using the emulator, you need to add make snod (System image, +NO Dependency check) to rebuild the system image file. You should not +need to do a top-level "make" and rebuild the dependent binaries. +

+At this point you have an "all stubs" interpreter. You can see how it +works by examining dalvik/vm/mterp/cstubs/entry.c. The +code runs in a loop, pulling out the next opcode, and invoking the +handler through a function pointer. Each handler takes a "glue" argument +that contains all of the useful state. +

+Your goal is to replace the entry method, exit method, and each individual +instruction with custom implementations. The first thing you need to do +is create an entry function that calls the handler for the first instruction. +After that, the instructions chain together, so you don't need a loop. +(Look at the ARM or x86 implementation to see how they work.) +

+Once you have that, you need something to jump to. You can't branch +directly to the C stub because it's expecting to be called with a "glue" +argument and then return. We need a C stub "wrapper" that does the +setup and jumps directly to the next handler. We write this in assembly +and then add it to the config file definition. +

+To see how this works, create a file called +dalvik/vm/mterp/myarch/stub.S that contains one line: +

 
+/* stub for ${opcode} */
+
+Then, in dalvik/vm/mterp/config-myarch, add this below the +handler-size directive: +
 
+# source for the instruction table stub
+asm-stub myarch/stub.S
+
+

+Regenerate the sources with ./rebuild.sh, and take a look +inside dalvik/vm/mterp/out/InterpAsm-myarch.S. You should +see 256 copies of the stub function in a single large block after the +dvmAsmInstructionStart label. The stub.S +code will be used anywhere you don't provide an assembly implementation. +

+Note that each block begins with a .balign 64 directive. +This is what pads each handler out to 64 bytes. Note also that the +${opcode} text changed into an opcode name, which should +be used to call the C implementation (dvmMterp_${opcode}). +

+The actual contents of stub.S are up to you to define. +See entry.S and stub.S in the armv5te +or x86 directories for working examples. +

+If you're working on a variation of an existing architecture, you may be +able to use most of the existing code and just provide replacements for +a few instructions. Look at the armv4t implementation as +an example. +

+ + +

Replacing Stubs

+ +

+There are roughly 230 Dalvik opcodes, including some that are inserted by +dexopt and aren't described in the +Dalvik bytecode documentation. Each +one must perform the appropriate actions, fetch the next opcode, and +branch to the next handler. The actions performed by the assembly version +must exactly match those performed by the C version (in +dalvik/vm/mterp/c/OP_*). +

+It is possible to customize the set of "optimized" instructions for your +platform. This is possible because optimized DEX files are not expected +to work on multiple devices. Adding, removing, or redefining instructions +is beyond the scope of this document, and for simplicity it's best to stick +with the basic set defined by the portable interpreter. +

+Once you have written a handler that looks like it should work, add +it to the config file. For example, suppose we have a working version +of OP_NOP. For demonstration purposes, fake it for now by +putting this into dalvik/vm/mterp/myarch/OP_NOP.S: +

 
+/* This is my NOP handler */
+
+

+Then, in the op-start section of config-myarch, add: +

 
+    op OP_NOP myarch
+
+

+This tells the generation script to use the assembly version from the +myarch directory instead of the C version from the c +directory. +

+Execute ./rebuild.sh. Look at InterpAsm-myarch.S +and InterpC-myarch.c in the out directory. You +will see that the OP_NOP stub wrapper has been replaced with our +new code in the assembly file, and the C stub implementation is no longer +included. +

+As you implement instructions, the C version and corresponding stub wrapper +will disappear from the output files. Eventually you will have a 100% +assembly interpreter. +

+ + +

Interpreter Switching

+ +

+The Dalvik VM actually includes a third interpreter implementation: the debug +interpreter. This is a variation of the portable interpreter that includes +support for debugging and profiling. +

+When a debugger attaches, or a profiling feature is enabled, the VM +will switch interpreters at a convenient point. This is done at the +same time as the GC safe point check: on a backward branch, a method +return, or an exception throw. Similarly, when the debugger detaches +or profiling is discontinued, execution transfers back to the "fast" or +"portable" interpreter. +

+Your entry function needs to test the "entryPoint" value in the "glue" +pointer to determine where execution should begin. Your exit function +will need to return a boolean that indicates whether the interpreter is +exiting (because we reached the "bottom" of a thread stack) or wants to +switch to the other implementation. +

+See the entry.S file in x86 or armv5te +for examples. +

+ + +

Testing

+ +

+A number of VM tests can be found in dalvik/tests. The most +useful during interpreter development is 003-omnibus-opcodes, +which tests many different instructions. +

+The basic invocation is: +

 
+$ cd dalvik/tests
+$ ./run-test 003
+
+

+This will run test 003 on an attached device or emulator. You can run +the test against your desktop VM by specifying --reference +if you suspect the test may be faulty. You can also use +--portable and --fast to explictly specify +one Dalvik interpreter or the other. +

+Some instructions are replaced by dexopt, notably when +"quickening" field accesses and method invocations. To ensure +that you are testing the basic form of the instruction, add the +--no-optimize option. +

+There is no in-built instruction tracing mechanism. If you want +to know for sure that your implementation of an opcode handler +is being used, the easiest approach is to insert a "printf" +call. For an example, look at common_squeak in +dalvik/vm/mterp/armv5te/footer.S. +

+At some point you need to ensure that debuggers and profiling work with +your interpreter. The easiest way to do this is to simply connect a +debugger or toggle profiling. (A future test suite may include some +tests for this.) +

+ + diff --git a/pdk/docs/porting/debugging_gdb.jd b/pdk/docs/porting/debugging_gdb.jd new file mode 100755 index 000000000..17ff471bc --- /dev/null +++ b/pdk/docs/porting/debugging_gdb.jd @@ -0,0 +1,146 @@ +page.title=Debugging with GDB +pdk.version=1.0 +doc.type=porting +@jd:body + +
+
+

In this document

+ + +
+
+ +

The current version of envsetup.sh has a gdbclient command that handles much of the setup. For example, to attach the + already-running globaltime application, execute the following, making sure that: 1) you do this from the same window used to build the software on the device you are debugging and 2) verify that the symbols in the object files in the build tree match up with what is installed on the device or emulator.

+
+gdbclient app_process :5039 globaltime
+
+

Debugging

+ +

Short Instructions

+

Android runs gdbserver on the device and an ARM aware gdb, named arm-eabi-gdb, on the desktop machine.

+
    +
  1. First you need to + run gdbserver on the device:
    +
    +	gdbserver :5039 /system/bin/executable       
    +  
    +
    + The :5039 tells gdbserver to listen on port 5039 on the localhost, which adb bridges from the host to the device. executable represents the command to debug, a common one being runtime -s which starts the entire system all running in a single process.
    +
    +
  2. +
  3. Launch gdb on the desktop. + This can be + done easily with the following command in the shell from which you built: +
    +gdbclient executable
    +
    +
  4. +
+

At this point gdb will connect with your device + and you should be + able to enter c to have the device start executing inside of the + desktop gdb session.

+ +

Detailed Instructions

+

If the short instructions don't work, these detailed instructions should: +

    +
  1. On the device, launch a new command: +
    gdbserver :5039 /system/bin/executable
    + or attach to an existing process: +
    gdbserver :5039 --attach pid
    +
  2. +
  3. On your workstation, forward port 5039 to the device with adb: +
    adb forward tcp:5039 tcp:5039
    +
  4. +
  5. Start a special version of gdb that lives in the "prebuilt" area of the source tree:
    + prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-eabi-gdb (for Linux)
    + prebuilt/darwin-x86/toolchain-eabi-4.2.1/bin/arm-eabi-gdb (for Darwin)
  6. +
  7. If you can't find either special version of gdb, run find prebuilt -name arm-eabi-gdb in your source tree to find and run the latest version: +
    +prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-eabi-gdb  out/target/product/product-name/symbols/system/bin/executable
    +
    +
    + Where product-name is the name of the device product that you're building (for example, sooner), + and executable is the program to debug (usually app_process for an application).
    +
    + Make sure to use the copy of the executable in the symbols directory, not the + primary android directory, because the one in the primary directory has + been stripped of its debugging information.
  8. +
  9. In gdb, Tell gdb where to find the shared libraries that will get loaded: +
    +set solib-absolute-prefix /absolute-source-path/out/target/product/product-name/symbols
    +set solib-search-path /absolute-source-path/out/target/product/product-name/symbols/system/lib
    +
    +
    + absolute-source-path is the path to your source tree; for example, /work/device or /Users/hoser/android/device.
    + product-name is the same as above; for example, sooner.
    +
    + Make sure you specify the correct directories—gdb may not tell you if you make a mistake.
  10. +
  11. Connect to the device by issuing the gdb command:
    +
    +target remote :5039
    +
    +
    +
    + The :5039 tells gdb to connect to the localhost port 5039, which is bridged to the device by adb.
    +
    + You may need to inspire gdb to load some symbols by typing: +
    shared
    +
  12. +
+

You should be connected and able to debug as you normally would. You can ignore the error about not + finding the location for the thread creation breakpoint. It will be found when + the linker loads libc into your process before hitting main(). Also note that + the gdb remote protocol doesn't have a way for the device to + tell the host about + newly created threads so you will not always see notifications about newly + created threads. Info about other threads will be queried from the + device when a + breakpoint is hit or you ask for it by running info thread. +

Just-In-Time Debug Feature

+If you see the red LED flashing it means a process is in that new +state (crashed and waiting for GDB connection). If this happens to the +system process, most likely your device will be frozen at this point. Do not press the home key. Bring the device to someone who can +debug native crashes and ask for advice. +If you're in the field and just want your device to continue as it +would have without this feature (like cylonning), press home (a +tombstone will be recorded as usual). + +To enable a process to be debugged this way, you need to set a property: +
+adb shell setprop debug.db.uid 10000
+
+and all processes with a uid <= 10000 will be trapped in this +manner. When one of them crashes, the tombstone is processed as usual, an explicit message is printed into the log, and the red LED starts +flashing waiting for the Home key to be depressed (in which case it +continues execution as usual). +
+I/DEBUG   (   27): ********************************************************
+I/DEBUG   (   27): * process 82 crashed. debuggerd waiting for gdbserver
+I/DEBUG   (   27): *
+I/DEBUG   (   27): *     adb shell gdbserver :port --attach 82 &
+I/DEBUG   (   27): *
+I/DEBUG   (   27): * and press the HOME key.
+I/DEBUG   (   27): ********************************************************
+
+

When you see the entry above, make sure adb is forwarding port 5039 (you only need to do this once, + unless the ADB server dies) and execute:

+
% adb forward tcp:5039 tcp:5039
+Execute the line shown in the debug output, substituting 5039 for the proper port: +
+% adb shell gdbserver :5039 --attach 82 &
+
+

If the crashing process is based off zygote (that is, system_server and all + applications), the default values for the gdbclient command, app_process binary and port 5039, are correct, so you can execute:

+
+% cd <top of device source tree>
+% gdbclient
+
+

Otherwise you need to determine the path of the crashing binary and follow the + steps as mentioned above (for example, gdbclient hoser :5039 if + the hoser command has failed).

diff --git a/pdk/docs/porting/debugging_native.jd b/pdk/docs/porting/debugging_native.jd new file mode 100755 index 000000000..7bb655fcb --- /dev/null +++ b/pdk/docs/porting/debugging_native.jd @@ -0,0 +1,305 @@ +page.title=Debugging Native Code +pdk.version=1.0 +doc.type=porting +@jd:body + + +
+
+

In this document

+ + +
+
+ +

Capturing logs

+ +

To capture log output:

+
    +
  1. Produce a process list with ps (ps -t if you want verbose thread feedback).
  2. +
  3. Dump kernel messages with dmesg.
  4. +
  5. Get verbose log messages with logcat '*:v' & (running in bg with & is important).
  6. + +
+ +

Debug Scenarios

+
+  # command to device shell (via adb)
+  % command to host pc shell
+
+

+

+ +

Crash but no exit...stuck

+ +

In this scenario, the GTalk app crashed but did not actually exit or seems stuck. Check the debug logs to see if there is anything unusual:

+ +
+# logcat &
+
+...
+E/WindowManager(  182): Window client android.util.BinderProxy@4089f948 has died!!  Removing window.
+W/WindowManager(  182): **** WINDOW CLIENT android.view.WindowProxy@40882248 DIED!
+W/ActivityManager(  182): **** APPLICATION com.google.android.gtalk DIED!
+I/ServiceManager(  257): Executing: /android/bin/app_process (link=/tmp/android-servicemanager/com.google.android.gtalk, wrapper=/tmp/android-servi
+cemanager/com.google.android.gtalk)
+I/appproc (  257): App process is starting with pid=257, class=android/activity/ActivityThread.
+I/        (  257): java.io.FileDescriptor: class initialization
+I/SurfaceFlinger.HW(  182): About to give-up screen
+I/SurfaceFlinger.HW(  182): screen given-up
+I/SurfaceFlinger.HW(  182): Screen about to return
+I/SurfaceFlinger.HW(  182): screen returned
+I/SurfaceFlinger.HW(  182): About to give-up screen
+I/SurfaceFlinger.HW(  182): screen given-up
+I/SurfaceFlinger.HW(  182): Screen about to return
+...
+
+ +

+The logs indicate that the system launched a replacement GTalk process but that it got stuck somehow: +

+ +
+# ps
+PID   PPID  VSIZE RSS   WCHAN    PC         NAME
+257   181   45780 5292  ffffffff 53030cb4 S com.google.andr
+
+ +

+GTalk's PC is at 53030cb4. Look at the memory map to find out what lib is 0x53...... +

+ +
+# cat /proc/257/maps
+...
+51000000-5107c000 rwxp 00000000 1f:03 619        /android/lib/libutils.so
+52000000-52013000 rwxp 00000000 1f:03 639        /android/lib/libz.so
+53000000-53039000 rwxp 00000000 1f:03 668        /android/lib/libc.so
+53039000-53042000 rw-p 53039000 00:00 0
+54000000-54002000 rwxp 00000000 1f:03 658        /android/lib/libstdc++.so
+...
+
+ +

+Disassemble libc to figure out what is going on: +

+ +
+% prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-elf-objdump -d out/target/product/sooner/symbols/android/lib/libc.so
+
+00030ca4 <__futex_wait>:
+  30ca4:       e1a03002        mov     r3, r2
+  30ca8:       e1a02001        mov     r2, r1
+  30cac:       e3a01000        mov     r1, #0  ; 0x0
+  30cb0:       ef9000f0        swi     0x009000f0
+  30cb4:       e12fff1e        bx      lr
+
+ +

Blocked in a syscall

+ +

+In this scenario, the system is blocked in a syscall. To debug using gdb, first tell adb to forward the gdb port: +

+ +
+
+% adb forward tcp:5039 tcp:5039
+
+ +

+Start the gdb server and attach to process 257 (as demonstrated in the previous example): +

+ +
+# gdbserver :5039 --attach 257 &
+Attached; pid = 257
+Listening on port 5039
+
+% prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-elf-gdb out/target/product/sooner/system/bin/app_process
+(gdb) set solib-absolute-prefix /work/android/device/out/target/product/sooner/symbols
+(gdb) set solib-search-path /work/android/device/out/target/product/sooner/symbols/android/lib
+(gdb) target remote :5039
+Remote debugging using :5039
+0x53030cb4 in ?? ()
+Current language:  auto; currently asm
+
+ +

+Don't let other threads get scheduled while we're debugging. +You should "set scheduler-locking off" before issuing a "continue", or else your thread may get stuck on a futex or other +spinlock because no other thread can release it. +

+ +
+(gdb) set scheduler-locking on
+
+ +

+Ignore SIGUSR1 if you're using JamVM. Shouldn't hurt if you're not. +

+ +
+(gdb) handle SIGUSR1 noprint
+
+(gdb) where
+#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
+#1  0x53010eb8 in pthread_cond_timedwait (cond=0x12081c, mutex=0x120818, abstime=0xffffffff)
+   at system/klibc/android/pthread.c:490
+#2  0x6b01c848 in monitorWait (mon=0x120818, self=0x6b039ba4, ms=0, ns=0) at extlibs/jamvm-1.4.1/src/lock.c:194
+#3  0x6b01d1d8 in objectWait (obj=0x408091c0, ms=0, ns=0) at extlibs/jamvm-1.4.1/src/lock.c:420
+#4  0x6b01d4c8 in jamWait (clazz=0xfffffffc, mb=0x0, ostack=0x2e188) at extlibs/jamvm-1.4.1/src/natives.c:91
+#5  0x6b013b2c in resolveNativeWrapper (clazz=0x408001d0, mb=0x41798, ostack=0x2e188) at extlibs/jamvm-1.4.1/src/dll.c:236
+#6  0x6b015c04 in executeJava () at extlibs/jamvm-1.4.1/src/interp.c:2614
+#7  0x6b01471c in executeMethodVaList (ob=0x0, clazz=0x40808f20, mb=0x12563c, jargs=0xbe9229f4)
+   at extlibs/jamvm-1.4.1/src/execute.c:91
+#8  0x6b01bcd0 in Jam_CallStaticVoidMethod (env=0xfffffffc, klass=0x0, methodID=0x12563c)
+   at extlibs/jamvm-1.4.1/src/jni.c:1063
+#9  0x58025b2c in android::AndroidRuntime::callStatic (this=0xfffffffc,
+   className=0xbe922f0a "android/activity/ActivityThread", methodName=0x57000b7c "main")
+   at libs/android_runtime/AndroidRuntime.cpp:215
+#10 0x57000504 in android::app_init (className=0xbe922f0a "android/activity/ActivityThread")
+   at servers/app/library/app_init.cpp:20
+#11 0x000089b0 in android::sp<android::ProcessState>::~sp ()
+#12 0x000089b0 in android::sp<android::ProcessState>::~sp ()
+Previous frame identical to this frame (corrupt stack?)
+
+(gdb) info threads
+ 7 thread 263  __ioctl () at system/klibc/syscalls/__ioctl.S:12
+ 6 thread 262  accept () at system/klibc/syscalls/accept.S:12
+ 5 thread 261  __futex_wait () at system/klibc/android/atomics_arm.S:88
+ 4 thread 260  __futex_wait () at system/klibc/android/atomics_arm.S:88
+ 3 thread 259  __futex_wait () at system/klibc/android/atomics_arm.S:88
+ 2 thread 258  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
+ 1 thread 257  __futex_wait () at system/klibc/android/atomics_arm.S:88
+
+
+(gdb) thread 7
+[Switching to thread 7 (thread 263)]#0  __ioctl () at system/klibc/syscalls/__ioctl.S:12
+12          movs    r0, r0
+(gdb) bt
+#0  __ioctl () at system/klibc/syscalls/__ioctl.S:12
+#1  0x53010704 in ioctl (fd=-512, request=-1072143871) at system/klibc/android/ioctl.c:22
+#2  0x51040ac0 in android::IPCThreadState::talkWithDriver (this=0x1207b8, doReceive=true) at RefBase.h:83
+#3  0x510418a0 in android::IPCThreadState::joinThreadPool (this=0x1207b8, isMain=false)
+   at libs/utils/IPCThreadState.cpp:343
+#4  0x51046004 in android::PoolThread::threadLoop (this=0xfffffe00) at libs/utils/ProcessState.cpp:52
+#5  0x51036428 in android::Thread::_threadLoop (user=0xfffffe00) at libs/utils/Threads.cpp:1100
+#6  0x58025c68 in android::AndroidRuntime::javaThreadShell (args=0x105ffe28) at libs/android_runtime/AndroidRuntime.cpp:540
+
+(gdb) thread 6
+[Switching to thread 6 (thread 262)]#0  accept () at system/klibc/syscalls/accept.S:12
+12          movs    r0, r0
+(gdb) bt
+#0  accept () at system/klibc/syscalls/accept.S:12
+#1  0x6b0334e4 in jdwpAcceptConnection (state=0xfffffe00) at extlibs/jamvm-1.4.1/jdwp/JdwpNet.c:213
+#2  0x6b032660 in jdwpThreadEntry (self=0x4d020) at extlibs/jamvm-1.4.1/jdwp/JdwpMain.c:37
+#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
+
+(gdb) thread 5
+[Switching to thread 5 (thread 261)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
+88              bx              lr
+(gdb) bt
+#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
+#1  0x53010f48 in pthread_cond_timeout (cond=0x6b039b64, mutex=0x6b039b60, msecs=0) at system/klibc/android/pthread.c:513
+#2  0x6b01c8d0 in monitorWait (mon=0x6b039b60, self=0x4d400, ms=1000, ns=272629312) at extlibs/jamvm-1.4.1/src/lock.c:183
+#3  0x6b022084 in threadSleep (thread=0x4d400, ms=1000, ns=272629312) at extlibs/jamvm-1.4.1/src/thread.c:215
+#4  0x6b00d4fc in asyncGCThreadLoop (self=0x4d400) at extlibs/jamvm-1.4.1/src/alloc.c:1179
+#5  0x6b022c2c in shell (args=0x4d480) at extlibs/jamvm-1.4.1/src/thread.c:629
+
+(gdb) thread 4
+[Switching to thread 4 (thread 260)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
+88              bx              lr
+(gdb) bt
+#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
+#1  0x53010eb8 in pthread_cond_timedwait (cond=0x6b039934, mutex=0x6b039930, abstime=0x0)
+   at system/klibc/android/pthread.c:490
+#2  0x6b00b3ec in referenceHandlerThreadLoop (self=0x4d360) at extlibs/jamvm-1.4.1/src/alloc.c:1247
+#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
+
+(gdb) thread 3
+[Switching to thread 3 (thread 259)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
+88              bx              lr
+(gdb) bt
+#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
+#1  0x53010eb8 in pthread_cond_timedwait (cond=0x6b03992c, mutex=0x6b039928, abstime=0x0)
+   at system/klibc/android/pthread.c:490
+#2  0x6b00b1dc in finalizerThreadLoop (self=0x4d8e0) at extlibs/jamvm-1.4.1/src/alloc.c:1238
+#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
+
+(gdb) thread 2
+[Switching to thread 2 (thread 258)]#0  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
+12          movs    r0, r0
+(gdb) bt
+#0  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
+#1  0x6b023814 in dumpThreadsLoop (self=0x51b98) at extlibs/jamvm-1.4.1/src/thread.c:1107
+#2  0x6b022c2c in shell (args=0x51b58) at extlibs/jamvm-1.4.1/src/thread.c:629
+
+ +

Crash in C / C++ code

+

If it crashes, connect with aproto and run logcat on the device. You should see output like this:

+ +
+I/ActivityManager(  188): Starting activity: Intent { component=com.android.calendar.MonthScreen }
+I/ActivityManager(  188): Starting application com.android.calendar to host activity com.android.calendar.MonthScree
+n
+I/ServiceManager(  417): Executing: /android/bin/app_process (link=/android/bin/app_process, wrapper=/android/bin/app_process)
+I/DEBUG: -- observer of pid 417 starting --
+I/appproc (  417): App process is starting with pid=417, class=android/activity/ActivityThread.
+I/DEBUG: -- observer of pid 417 exiting --
+I/DEBUG: -- observer of pid 420 starting --
+I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+I/DEBUG: pid: 373, tid: 401  >>> android.content.providers.pim <<<
+I/DEBUG: signal 11 (SIGSEGV), fault addr 00000000
+I/DEBUG:  r0 ffffffff  r1 00000000  r2 00000454  r3 002136d4
+I/DEBUG:  r4 002136c0  r5 40804810  r6 0022dc70  r7 00000010
+I/DEBUG:  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
+I/DEBUG:  ip 6b039e90  sp 109ffc0c  lr 580239f0  pc 6b0156a0
+I/DEBUG:          #01  pc 6b0156a0  /android/lib/libjamvm.so
+I/DEBUG:          #01  lr 580239f0  /android/lib/libandroid_runtime.so
+I/DEBUG:          #02  pc 6b01481c  /android/lib/libjamvm.so
+I/DEBUG:          #03  pc 6b0148a4  /android/lib/libjamvm.so
+I/DEBUG:          #04  pc 6b00ebc0  /android/lib/libjamvm.so
+I/DEBUG:          #05  pc 6b02166c  /android/lib/libjamvm.so
+I/DEBUG:          #06  pc 6b01657c  /android/lib/libjamvm.so
+I/DEBUG:          #07  pc 6b01481c  /android/lib/libjamvm.so
+I/DEBUG:          #08  pc 6b0148a4  /android/lib/libjamvm.so
+I/DEBUG:          #09  pc 6b0235c0  /android/lib/libjamvm.so
+I/DEBUG:          #10  pc 5300fac4  /android/lib/libc.so
+I/DEBUG:          #11  pc 5300fc5c  /android/lib/libc.so
+I/DEBUG: -- observer of pid 373 exiting --
+I/DEBUG: -- observer of pid 423 starting --
+
+ +

If debugging output indicates an error in C or C++ code, the addresses aren't particularly useful, but the debugging symbols aren't present on the device. Use the "stack" tool to convert these addresses to files and line numbers, for example:

+ +
 
+pid: 373, tid: 401  >>> android.content.providers.pim <<<
+
+ signal 11 (SIGSEGV), fault addr 00000000
+  r0 ffffffff  r1 00000000  r2 00000454  r3 002136d4
+  r4 002136c0  r5 40804810  r6 0022dc70  r7 00000010
+  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
+  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
+
+  ADDR      FUNCTION                        FILE:LINE
+  6b0156a0  executeJava                     extlibs/jamvm-1.4.1/src/interp.c:2674
+  580239f0  android_util_Parcel_freeBuffer  libs/android_runtime/android_util_Binder.cpp:765
+  6b01481c  executeMethodVaList             extlibs/jamvm- 1.4.1/src/execute.c:91
+  6b0148a4  executeMethodArgs               extlibs/jamvm-1.4.1/src/execute.c:67
+  6b00ebc0  initClass                       extlibs/jamvm-1.4.1/src/class.c:1124
+  6b02166c  resolveMethod                   extlibs/jamvm- 1.4.1/src/resolve.c:197
+  6b01657c  executeJava                     extlibs/jamvm-1.4.1/src/interp.c:2237
+  6b01481c  executeMethodVaList             extlibs/jamvm-1.4.1/src/execute.c:91
+  6b0148a4  executeMethodArgs               extlibs/jamvm- 1.4.1/src/execute.c:67
+  6b0235c0  threadStart                     extlibs/jamvm-1.4.1/src/thread.c:355
+  5300fac4  __thread_entry                  system/klibc/android/pthread.c:59
+  5300fc5c  pthread_create                  system/klibc/android/pthread.c:182
+
+ +

Or you can run logcat without any parameters and it will read from stdin. You can then paste output into the terminal or pipe it. Run logcat from the top of the tree in the environment in which you do builds so that the application can determine relative paths to the toolchain to use to decode the object files. +

+ + diff --git a/pdk/docs/porting/display_drivers.jd b/pdk/docs/porting/display_drivers.jd new file mode 100755 index 000000000..570f6f670 --- /dev/null +++ b/pdk/docs/porting/display_drivers.jd @@ -0,0 +1,345 @@ +page.title=Display Drivers +pdk.version=1.0 +doc.type=porting +@jd:body + + + + + +

This section describes how the display driver functions and offers a functional template designed to help you build your own device-specific driver.

+

Android relies on the standard frame buffer device (/dev/fb0 or /dev/graphics/fb0) and driver as described in the linux/fb.h kernel header file. For more information regarding the standard Linux frame buffer, please see The Frame Buffer Device at http://kernel.org. + + +

Functionality

+ +

In Android, every window gets implemented with an underlying Surface object, an object that gets placed on the framebuffer by SurfaceFlinger, the system-wide screen composer. Each Surface is double-buffered. The back buffer is where drawing takes place and the front buffer is used for composition.

+

When unlockCanvas() is called, the back buffer is posted, which + means that it gets displayed and  becomes available again. Android flips the front and back buffers, ensuring a minimal amount of buffer copying and that there is always a buffer for SurfaceFlinger to use for composition (which ensures that the screen never flickers or shows artifacts).

+

Android makes two requirements of the driver: a linear address space of mappable memory that it can write to directly and support for the rgb_565 pixel format. A typical frame display includes:

+
    +
  • accessing the driver by calling open on /dev/fb0
  • +
  • using the FBIOGET_FSCREENINFO and FBIOGET_VSCREENINFO Input / Output Control (ioctl) calls to retrieve information about the screen
  • +
  • using FBIOPUT_VSCREENINFO ioctl to attempt to create a virtual display twice the size of the physical screen and to set the pixel format to rgb_565. If this succeeds, double buffering is accomplished with video memory.
  • +
+

When a page flip is required, Android makes another FBIOPUT_VSCREENINFO ioctl call with a new y-offset pointing to the other buffer in video memory. This ioctl, in turn, invokes the driver's .fb_pan_display function in order to do the actual flip. If there isn't sufficient video memory, regular memory is used and is just copied into the video memory when it is time do the flip. After allocating the video memory and setting the pixel format, Android uses mmap() to map the memory into the process's address space. All writes to the frame buffer are done through this mmaped memory.

+

To maintain adequate performance, framebuffer memory should be cacheable. If you use write-back, flush the cache before the frame buffer is written from DMA to the LCD. If that isn't possible, you may use write-through. As a last resort, you can also use uncached memory with the write-bugger enabled, but performance will suffer.

+ + +

Implementing Your Own Driver (Driver Template)

+ +

The following sample driver offers a functional example to help you build your own display driver. Modify PGUIDE_FB... macros as desired to match the requirements of your own device hardware.

+
+/*
+ *  pguidefb.c
+ * 
+ *  Copyright 2007, Google Inc.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+
+
+/*
+ * ANDROID PORTING GUIDE: FRAME BUFFER DRIVER TEMPLATE
+ *
+ * This template is designed to provide the minimum frame buffer
+ * functionality necessary for Android to display properly on a new
+ * device.  The PGUIDE_FB macros are meant as pointers indicating
+ * where to implement the hardware specific code necessary for the new
+ * device.  The existence of the macros is not meant to trivialize the
+ * work required, just as an indication of where the work needs to be
+ * done.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/string.h>
+#include <linux/slab.h>
+#include <linux/delay.h>
+#include <linux/mm.h>
+#include <linux/fb.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+
+
+/* Android currently only uses rgb565 in the hardware framebuffer */
+#define ANDROID_BYTES_PER_PIXEL 2
+
+/* Android will use double buffer in video if there is enough */
+#define ANDROID_NUMBER_OF_BUFFERS 2
+
+/* Modify these macros to suit the hardware */
+
+#define PGUIDE_FB_ROTATE 
+	/* Do what is necessary to cause the rotation */
+
+#define PGUIDE_FB_PAN 
+	/* Do what is necessary to cause the panning */
+
+#define PGUIDE_FB_PROBE_FIRST 
+	/* Do any early hardware initialization */
+
+#define PGUIDE_FB_PROBE_SECOND
+	/* Do any later hardware initialization */
+
+#define PGUIDE_FB_WIDTH 320
+	/* Return the width of the screen */
+
+#define PGUIDE_FB_HEIGHT 240
+	/* Return the heighth of the screen */
+
+#define PGUIDE_FB_SCREEN_BASE 0
+	/* Return the virtual address of the start of fb memory */
+
+#define PGUIDE_FB_SMEM_START PGUIDE_FB_SCREEN_BASE
+	/* Return the physical address of the start of fb memory */
+
+#define PGUIDE_FB_REMOVE 
+	/* Do any hardware shutdown */
+
+
+
+
+
+struct pguide_fb {
+	int rotation;
+	struct fb_info fb;
+	u32			cmap[16];
+};
+
+static inline u32 convert_bitfield(int val, struct fb_bitfield *bf)
+{
+	unsigned int mask = (1 << bf->length) - 1;
+
+	return (val >> (16 - bf->length) & mask) << bf->offset;
+}
+
+
+/* set the software color map.  Probably doesn't need modifying. */
+static int
+pguide_fb_setcolreg(unsigned int regno, unsigned int red, unsigned int green,
+		 unsigned int blue, unsigned int transp, struct fb_info *info)
+{
+        struct pguide_fb  *fb = container_of(info, struct pguide_fb, fb);
+
+	if (regno < 16) {
+		fb->cmap[regno] = convert_bitfield(transp, &fb->fb.var.transp) |
+				  convert_bitfield(blue, &fb->fb.var.blue) |
+				  convert_bitfield(green, &fb->fb.var.green) |
+				  convert_bitfield(red, &fb->fb.var.red);
+		return 0;
+	}
+	else {
+		return 1;
+	}
+}
+
+/* check var to see if supported by this device.  Probably doesn't
+ * need modifying.
+ */
+static int pguide_fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
+{
+	if((var->rotate & 1) != (info->var.rotate & 1)) {
+		if((var->xres != info->var.yres) ||
+		   (var->yres != info->var.xres) ||
+		   (var->xres_virtual != info->var.yres) ||
+		   (var->yres_virtual > 
+		    info->var.xres * ANDROID_NUMBER_OF_BUFFERS) ||
+		   (var->yres_virtual < info->var.xres )) {
+			return -EINVAL;
+		}
+	}
+	else {
+		if((var->xres != info->var.xres) ||
+		   (var->yres != info->var.yres) ||
+		   (var->xres_virtual != info->var.xres) ||
+		   (var->yres_virtual > 
+		    info->var.yres * ANDROID_NUMBER_OF_BUFFERS) ||
+		   (var->yres_virtual < info->var.yres )) {
+			return -EINVAL;
+		}
+	}
+	if((var->xoffset != info->var.xoffset) ||
+	   (var->bits_per_pixel != info->var.bits_per_pixel) ||
+	   (var->grayscale != info->var.grayscale)) {
+		return -EINVAL;
+	}
+	return 0;
+}
+
+
+/* Handles screen rotation if device supports it. */
+static int pguide_fb_set_par(struct fb_info *info)
+{
+	struct pguide_fb *fb = container_of(info, struct pguide_fb, fb);
+	if(fb->rotation != fb->fb.var.rotate) {
+		info->fix.line_length = 
+		  info->var.xres * ANDROID_BYTES_PER_PIXEL;
+		fb->rotation = fb->fb.var.rotate;
+		PGUIDE_FB_ROTATE;
+	}
+	return 0;
+}
+
+
+/* Pan the display if device supports it. */
+static int pguide_fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
+{
+	struct pguide_fb *fb    __attribute__ ((unused)) 
+	    = container_of(info, struct pguide_fb, fb);
+
+	/* Set the frame buffer base to something like:
+	   fb->fb.fix.smem_start + fb->fb.var.xres * 
+	   ANDROID_BYTES_PER_PIXEL * var->yoffset
+	*/
+	PGUIDE_FB_PAN;
+
+	return 0;
+}
+
+
+static struct fb_ops pguide_fb_ops = {
+	.owner          = THIS_MODULE,
+	.fb_check_var   = pguide_fb_check_var,
+	.fb_set_par     = pguide_fb_set_par,
+	.fb_setcolreg   = pguide_fb_setcolreg,
+	.fb_pan_display = pguide_fb_pan_display,
+
+	/* These are generic software based fb functions */
+	.fb_fillrect    = cfb_fillrect,
+	.fb_copyarea    = cfb_copyarea,
+	.fb_imageblit   = cfb_imageblit,
+};
+
+
+static int pguide_fb_probe(struct platform_device *pdev)
+{
+	int ret;
+	struct pguide_fb *fb;
+	size_t framesize;
+	uint32_t width, height;
+
+	fb = kzalloc(sizeof(*fb), GFP_KERNEL);
+	if(fb == NULL) {
+		ret = -ENOMEM;
+		goto err_fb_alloc_failed;
+	}
+	platform_set_drvdata(pdev, fb);
+
+	PGUIDE_FB_PROBE_FIRST;
+	width = PGUIDE_FB_WIDTH;
+	height = PGUIDE_FB_HEIGHT;
+
+
+	fb->fb.fbops		= &pguide_fb_ops;
+
+	/* These modes are the ones currently required by Android */
+
+	fb->fb.flags		= FBINFO_FLAG_DEFAULT;
+	fb->fb.pseudo_palette	= fb->cmap;
+	fb->fb.fix.type		= FB_TYPE_PACKED_PIXELS;
+	fb->fb.fix.visual = FB_VISUAL_TRUECOLOR;
+	fb->fb.fix.line_length = width * ANDROID_BYTES_PER_PIXEL;
+	fb->fb.fix.accel	= FB_ACCEL_NONE;
+	fb->fb.fix.ypanstep = 1;
+
+	fb->fb.var.xres		= width;
+	fb->fb.var.yres		= height;
+	fb->fb.var.xres_virtual	= width;
+	fb->fb.var.yres_virtual	= height * ANDROID_NUMBER_OF_BUFFERS;
+	fb->fb.var.bits_per_pixel = 16;
+	fb->fb.var.activate	= FB_ACTIVATE_NOW;
+	fb->fb.var.height	= height;
+	fb->fb.var.width	= width;
+
+	fb->fb.var.red.offset = 11;
+	fb->fb.var.red.length = 5;
+	fb->fb.var.green.offset = 5;
+	fb->fb.var.green.length = 6;
+	fb->fb.var.blue.offset = 0;
+	fb->fb.var.blue.length = 5;
+
+	framesize = width * height * 
+	  ANDROID_BYTES_PER_PIXEL * ANDROID_NUMBER_OF_BUFFERS;
+	fb->fb.screen_base = PGUIDE_FB_SCREEN_BASE;
+	fb->fb.fix.smem_start = PGUIDE_FB_SMEM_START;
+	fb->fb.fix.smem_len = framesize;
+
+	ret = fb_set_var(&fb->fb, &fb->fb.var);
+	if(ret)
+		goto err_fb_set_var_failed;
+
+	PGUIDE_FB_PROBE_SECOND;
+
+	ret = register_framebuffer(&fb->fb);
+	if(ret)
+		goto err_register_framebuffer_failed;
+
+	return 0;
+
+
+err_register_framebuffer_failed:
+err_fb_set_var_failed:
+	kfree(fb);
+err_fb_alloc_failed:
+	return ret;
+}
+
+static int pguide_fb_remove(struct platform_device *pdev)
+{
+	struct pguide_fb *fb = platform_get_drvdata(pdev);
+
+	PGUIDE_FB_REMOVE;
+
+	kfree(fb);
+	return 0;
+}
+
+
+static struct platform_driver pguide_fb_driver = {
+	.probe		= pguide_fb_probe,
+	.remove		= pguide_fb_remove,
+	.driver = {
+		.name = "pguide_fb"
+	}
+};
+
+static int __init pguide_fb_init(void)
+{
+	return platform_driver_register(&pguide_fb_driver);
+}
+
+static void __exit pguide_fb_exit(void)
+{
+	platform_driver_unregister(&pguide_fb_driver);
+}
+
+module_init(pguide_fb_init);
+module_exit(pguide_fb_exit);
+
+MODULE_LICENSE("GPL");
+
+ + +

Troubleshooting

+ +

Both of the following problems have a similar cause:

+
    +
  • Number keys: In the dialer application, when a number key is pressed to dial a phone number, the number doesn't display on the screen until after the next number has been pressed.
  • +
  • Arrow keys: When an arrow key is pressed, the desired icon doesn't get highlighted. For example, if you browse through icons in the Applications menu, you might notice that icons aren't highlighted as expected when you use the arrow key to navigate between options.
  • +
+

Both problems are caused by an incorrect implementation of the frame buffer's page flipping. Key events are captured, but the graphical interface appears to drop every other frame.

+

Android relies on a double buffer to smoothly render page flips (please see Functionality for details).

diff --git a/pdk/docs/porting/getting_source_code.jd b/pdk/docs/porting/getting_source_code.jd new file mode 100755 index 000000000..30a2f9fee --- /dev/null +++ b/pdk/docs/porting/getting_source_code.jd @@ -0,0 +1,128 @@ +page.title=Getting Source Code +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

Introduction

+ +

Android relies on Git, a version control system, to install the Android platform. You will need to install Git 1.5.2 or greater in order to access the source tree. Please visit http://git.or.cz/ for more information regarding Git.

+

Git permits you to control access to working directories, and we recommend that you use it to limit Android repository access to only a few people within your organization (please refer to your Google NDA for potential contractual restraints on sharing Android source access).

+

You may clone Google's repository to a local copy for sharing internally (see Git documentation for details).

+ + +

Installing and Configuring Git

+ +

To install the Git package, execute:

+
+% sudo apt-get install git-core
+
+ + +

Establishing Server Access

+ +

Once Git is cleanly installed, you need to establish a connection with Google's Git server, a connection that requires an RSA key in order to authenticate requests.

+ + +

Generating RSA Keys

+ +

Each developer must have a unique RSA key in order to access Android source code. To generate an RSA key:

+

+

    +
  1. Type:
    +
    % ssh-keygen -t rsa -C  email@domain.com

    +You must use a valid email address to create your key.
  2. +
  3. When prompted, indicate the file to which you wish to write your key (id_rsa in this example).
  4. +
  5. When prompted, associate a passphrase with your key.
  6. +
  7. Upon success, you should have two files saved to the designated directory:
  8. +
      +
    • id_rsa: This file contains the private half of your RSA key. You shouldn't share this file with anyone.
    • +
    • id_rsa.pub: This is the public half or your RSA key and you should send it to your Google technical account manager.
    • +
    +
+

+

Send your Google Account Manager your public key file in order to establish Git server access.

+ + +

Verifying a Connection to the Git Server

+ +

Once you have generated an RSA key and shared the public file with Google, you can test your connection with the Git server with the following command:

+
+% ssh  android-git.ext.google.com
+
+ +

You should receive one of the following results:

+ + + + + + + + + + + + + + + + + + + + + + +
ResultCauseAction
+fatal: What do you think I am? A shell?
+Connection to android-git closed.
+
SuccessNone. You successfully connected to the Git server. (You should not have shell access and it's expected to receive this error.)
ssh hangs and eventually times out. Your setup is failing to locate and establish a basic connection. Google needs to debug network settings.
Error: Permission denied <public key> Either you are not using the matching username or the RSA private key does not match the public key. Try executing:
+ +% ssh $USER@android- + git.ext.google.com +
+ + +

Downloading Code

+ +

Android source code is maintained in two repositories: device and kernel. The device repository includes the Android framework (things like the Activity Manager, Window Manager, Telephony Manager, View System, etc.). The kernel repository includes the core code necessary to run the operating system (things like the Display Driver, Camera Driver, Keypad Driver, Power Management, etc.). (Please see What is Android? for details.)

+ +

Save device and kernel code at the same directory level, for example:

+

+

  • /home/joe/android/device
  • +
  • /home/joe/android/kernel
  • +

+

Device Code

+

To download device code, you need your username and a unique <path> string supplied by Google to execute the following:

+
+% git-clone $USER@android-git.ext.google.com:<path>/device.git
+
+ +

Kernel Code

+

To download kernel code, you need your username and a unique <path> string supplied by Google to execute the following:

+
+% git-clone $USER@android-git.ext.google.com:<path>/kernel.git
+
+ + + +

Extracting an Android Patch

+ +

You likely already have Linux running on your platform and only need to integrate Android-specific changes. The following directions describe how to extract an Android patch.

+
    +
  1. Download a generic version of the Linux kernel that matches the Linux version downloaded with the Android Kernel code.
  2. +
  3. Run diff on the two kernel packages to get Android-specific changes.
  4. +
  5. Apply the patch to your target kernel and build.
  6. +
+ diff --git a/pdk/docs/porting/gps.jd b/pdk/docs/porting/gps.jd new file mode 100755 index 000000000..144946043 --- /dev/null +++ b/pdk/docs/porting/gps.jd @@ -0,0 +1,60 @@ +page.title=GPS +pdk.version=1.0 +doc.type=porting +@jd:body + +
+
+

In this document

+ + +
+
+ +

Android defines a user space C abstraction interface for GPS hardware. The interface header is defined in include/hardware/gps.h. In order to integate GPS with Android, you need to build a shared library that implements this interface.

+ + +

Building a GPS Library

+ +

To implement a GPS driver, create a shared library that implements the interface defined in gps.h. You must name your shared library libgps.so so that it will get loaded from /system/lib at runtime. Place GPS sources and Android.mk in vendor/acme/chipset_or_board/gps/ (where "acme" is your organization name and "chipset_or_board" is your hardware target).

+ +

The following stub Android.mk file ensures that libgps compiles and links to the appropriate libraries:

+ +
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libgps
+
+LOCAL_STATIC_LIBRARIES:= \
+# include any static library dependencies
+
+LOCAL_SHARED_LIBRARIES := \
+# include any shared library dependencies
+
+LOCAL_SRC_FILES += \
+# include your source files.  eg. MyGpsLibrary.cpp
+
+LOCAL_CFLAGS += \
+# include any needed compile flags
+
+LOCAL_C_INCLUDES:= \
+# include any needed local header files
+
+include $(BUILD_SHARED_LIBRARY)
+
+ + +

Interface

+ + + +

+ +

Note: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, click here.

+ + + diff --git a/pdk/docs/porting/group__memory.jd b/pdk/docs/porting/group__memory.jd new file mode 100755 index 000000000..224e0cb2d --- /dev/null +++ b/pdk/docs/porting/group__memory.jd @@ -0,0 +1,24 @@ +page.title=Providing Heap Memory +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +[Neworking Support] + + +
+This is the text in the "Providing Heap Memory" subgroup
+ diff --git a/pdk/docs/porting/group__networking.jd b/pdk/docs/porting/group__networking.jd new file mode 100755 index 000000000..67da8a66f --- /dev/null +++ b/pdk/docs/porting/group__networking.jd @@ -0,0 +1,26 @@ +page.title=Networking Support +pdk.version=1.0 +doc.type=porting +@jd:body + + + + + + + + +

Modules

 Porividng Heap Memory
+

Detailed Description

+This is a text for the Networking Support Group
+ diff --git a/pdk/docs/porting/images/androidBluetooth.gif b/pdk/docs/porting/images/androidBluetooth.gif new file mode 100755 index 0000000000000000000000000000000000000000..e62f5a8de479ff1ac4bd8dd6ca50a916d14ca205 GIT binary patch literal 21239 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/androidPMArchitecture.gif b/pdk/docs/porting/images/androidPMArchitecture.gif new file mode 100755 index 0000000000000000000000000000000000000000..1aa48db61fc602fc73184b63b194dce996aec2e3 GIT binary patch literal 30087 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/android_audio_architecture.gif b/pdk/docs/porting/images/android_audio_architecture.gif new file mode 100755 index 0000000000000000000000000000000000000000..79854a34da8bd7c8b70fbe8f30d589045ac3d3b5 GIT binary patch literal 28092 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 baplgXTi5Pgym|HR<=fZqU%+{d1Oxy(u5$Y> literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/cameraPreview.jpg b/pdk/docs/porting/images/cameraPreview.jpg new file mode 100755 index 0000000000000000000000000000000000000000..3dea011747783653baec683a3f129a4403a5fcf6 GIT binary patch literal 153086 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�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 Zk|<>~ocVc13tVh|oATW=g_PfEe+Me=gU0{> literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/cameraTakePicture.jpg b/pdk/docs/porting/images/cameraTakePicture.jpg new file mode 100755 index 0000000000000000000000000000000000000000..4ac6d953e3797c81346ad927b991df7259c1573e GIT binary patch literal 169003 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 ZR!|x4o%vm+ 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%0D}-5(8^MU*WJjhoVA31{sJmeQx4&$W0{|W* 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

Z=1Vw~2w;|?0qyO{N!wMF&QydcRX*XVtl2Uu zfq~s8nNN5mIkx!4XaTk}V(A$PG!jn$`wzU~B!0gI%X(H-bAbiQunZ1PrL6(i7m*lZdJp27`gZd&;g}druS>P0Qd<@?$|cazzMO`TgQRhiWQ5 z92f|qC=RT69nV2#3&8Jimte^GY=Alyy27xE_L*Ea4GG%?5Gh;2OHU{_tnp9y-B(^X zIEeY)u-Lk_Tx4+ttX~ejC0;h8;@oKd?lF`W0ROZDHAe{;wSZwb8%87niXOx~58?&D zd9+VaEnsUS0^w3MvuAkFeyflUH_kz#*j=))g$PB3#p+-L`D|Zu*}I(q!L^P zIxO>0S%mEix1XN|-LTBtFu`4YCGYbX4R6+iQ=jTPqPy_d*Ul7S+>Fal2o_@>V)jhl zDZ4%$)Krufo|f?+vOzI2F}5_uC(P6B) zMz=ij&1z^NDH%Pt1g8tUz60vi0{wnU{*M;U&ql_9gQmaXV7Z}#c`H=OH=n5*z3`zk zl6u@tfV|()6Dn@5QR8bU9+L^>GV-7p;9*?U_k`-pe)U%R?7$0!=g=E@WC*8S`FQAQ?jO8g0vC4pqZN22Ef2|I^ROgVVas^Ek{vUYIT# zN-~LHYiOMo8TDBonL40#AKpq)cyM0fyw2|1cVSd*GA&jKcfFuRRrY<$3ZXbj| z^~zb$$47QnqL7L`V~2>lo(OIt-uvht(4ACb`8!aRiO!(8zA#T{I5SiFnOu>#T&gfd z?*se$ozp^!6ikm1g z(2dumYwo_EJbxcbFwMD^`(fVROJR4<4i^5uj!m22}v8k(T4vo`Nze6KA~RbZ}-{JIQ#=& z@>l-_hO`{x?7gxk5)jxY3N*kl_h%sv!I;MKkOD?Yiv4gu7vTKc_gk<+&~4fQX0#6Il@5dY0TJ#s-#08D_{ z{9f?+#uAX|2UJb~J{{_G`GqEGkdrm29n)6>2o=1dqj*j3xFcT)-N+*E`bfcC-_aNe zU$D3X##nQ_eQ@Wk3V$Af5Zi5cQ~y-I?5Cn!3JQQwgpx&j#!#Y=Q<(C>!?zV58=)^i zOqjHfkoVowdXxW!Mf99xnvgx{KgK_U(*c%^N#0Opj*XhFz0{jsUEQU>ni;ZIyXpEs z^!NSy1Ae(8UmncvGe(dvxdQ&yjkE77hi7vsT%14%+M+Ws=k9jg{~_zH-=YfNb%9SY zGxX3cLx+ffNGS>!q>4!A(2YZv!q6e$&&QW66q4I)T`0xC#3hwt8JU*|gK z{0Hl&wcht$&-1y>C?efAuUS*&c~T;YYCb{^Ph+FT!5FrgWcJkXG`7N6@LDcwVpZa^d z@$_@s2kE zoA?Lx>*CZ0=0Ba}enMVS!?8a%Y7Ss8L&0AU4(tyQH>t_*ADY=8Zu~o7rS+$Oe^{)2 zcfW3cYeLo)4+ zd*gp@bpNrb)zu;W;jjSQP(3ybKHj!DM&~~@&;RW@{^#ZWlL@|)0B%LcmnZ1_lh-dL zU)}%9{NhBxT`vVp@ymxI{w8(q{8Jr0e5JzIjpu-#YrjHY{*}}DoAZ`0xR&9h2vl&! z+XNO-U7#57G?8J}w|IEgx%W^U^V{YpFq?F`{q3|h|5|iD!xJVEt`CyDJxn$bDXBMo z6CKY|CK(N+AN4T-<&LEqf{y`8YaO)y?ZKBH=+3(HC5HiejL3?7yl}ypaGRLaO}o3F zXemaYSwq%Ip!-Uf)3ui->6gF1vUc6y=xz|<2Es)}sp*4*HK~~+g0G7*3q&F#=#i0W z^whxu^f~m`voh2EH;PawZczR|C_)hc+w?yuLgN$Kp8rA-ngC>UJ*~k>!J*-iVPAr& z!^i}duo;Cb0(8{WT#*9rA~%QY1&sF(k3P2i`VWfG|KaQkMR>2kIQwfv2c|Z~Y-Yk} zNi1*)CdAN}jv>gH(u#nLdZE4jZ~yLuT%iayH-iLURCLN7WFndJO5_{U)K%i4niBIa zO5c+EG&3jTDYUJ$!|78W`PZ-jK|Dj$rK@)UtitRQDsZ3Cw3 zIhW;hD8>axSM@K0j_fXChXJR-d{L2Tw9K(kojq)hr6I5 zcWphiZhuRAQk}yRu{xSKm+;g~|7fQ%(>njptMj_;(T4N7e0xCuH3>Ln#i{ z49c7bLofdRz6#gxf1UhyetIcnfw}l&U=ad2N=IV;@yy~vX{G#-;gMqR$Rf^|q6qRseLrq$9+NHvi>~6El|Li<6o(Bo*?=)@1O--(PhoOi(_P zJBdnw(W|`-Ir!DL6_vcdM5MgeVVW?et^(&WzDsSV zYP@bNOLgCm(1*YgnT6~31_dccs{0LBCZ5%BHuj0pmHmO?kzXXL8p~M&^%}pAt%gvJ zGUNBJ0}(H%+PA0c-8#mP>-*$qn?py%XhSH8aCQl85(c8DW%N_{rW#73mqO_A&)!P&QD63brqJhT119;Vf={SA1`s6TUgiq6jIsQH;;E zUF#yK1*ubr`nRu!$J8M|b%-Gl2$%Hqgm&dZ$Vyyc^`nM2E&rO==+5wf@Tr-TWi&x9_n-NRT&*Co3@Ys} z-3WGY23)%E*P^0#u2Hz)pd5ceo36D&FOt+?y!hno+;PMg9Ds~}u-h9^%(<@g?SVsL z&))NQfZMYx*8s%#B~#k|?Q6Nv8xlRiUP@7FT2@Pq2X~vcH5jKF%;wE85Ppew! z%q@c-#RCrCpr{I22h{q-m~n9?MJh}dD>8yq0I?M;L0(@wOck<%6dLL07X^aU_LM=t zk}+gy+V@N!t}ryg35=C~kEBBn<46e?1?-80$E{2g{HlxQWbN2K)z=V!g+GQFiU?yh ztu`yuDi$>u8rE+=O2x+&i&+>A3s716D8}(xBxJxuXE8=R@E&qbr4cLkUm1g1B~s}_ zBX$bEGKpdv%mw}+WZ`f%ks>{0&%v4e-Y5GFX;tjhCj z4gIWpw<}(_n&_)r8~PP?+guKgQd< z-l4vlGHf!VXJv7L0iY|P5ae-v#^|2b&-ri-{grqNWt3E_Rm@bbRlPVGV`uPb&b8!8 zqkys!gO29x7j_@8FBwShiqSET8>KA2UEvy~Y5GBsK!(#Z0SD|F_)9C{dvDZum44Fw zDAQbeEa57Ww~N`*@vWJ*U9djqsreDqg7^IbS~yyN6Mx&1a#^wV)n@i&sT7hn-Z|<| zKw=cfR9ZKH2G32BL4*1KigzU5eiTf)jw+#_B{*>?t7qWJpt7vxu5uyNrst_O%`=R= z_zAcr^V;#?OZ5q_4g*At?A9v!Z-j?Y%f^h>JUl?bOJ z$(54}1B1Ra>zm^~fo1S}wz(J}kaMLBL;x5$64u4X3ADFbkAU5;zEg)IKhpa=CkvTa zHT@3kmSVz?d*Q$g*wfBi84WaQNI=QP>A>wV%lXNwHON~lTJ*gm9Wa+AR#$mA_UR7P z3jZDMRK@s2qTbR`$(|mo1bdxU&UXCDzIgI<%KI2h-WUg@f2aVITsepe+F7tM1oRh7 z1EH;ABq&#kaXX9{!rB@aaz9+5Joukvh;PRO|GmGofYy+=e2SlKD@T+6p+ZZ_Ur#|K zP_9p=A2k-?_j{8FR6jeUEF3GJi$;d#OOJ?NdTXxb>Lk=ME~y|?+7)kjBoAjotWdI0 zR+`WJvhBprZ$cv4p1eq>Wk=G@f=1JKFyDhBi0_f+GHzHS?ZPQ410R*4OT5Q@xFys| z0u0?T_25Cg+J1Upws&0&8j{Vpd^BA@dAR}+LSK$OMLd{^ApB^|UYULNHo&fhkUB%! z31o52`^fQB;)P@@doi5*PpLZEmg;Zr7--A8;z@-)J$eyRI32q<-_ysn&!hZtDutE z^Rdj~z`f%_uz1Gtfn`9L+;4L>C5*IH;N|a>rx&}2$Bpx)ZlJ_M)9qdvkzoezfcKP2 zOYi#cYAh)p>c8nZNP2e3U2(DPXJHNpDYgB5UK2P%Kil-M(e6FUp&RpRSm;X80{kvL;4sR`OE9Qv!|8>u4oWDjhxz5>(va>F zC&LUQA)L8G7{J$_-dNjBTp;ZFBRk2ANWn(|vnP=*!f1@})qpPAj^Gcn4~a00X3?a5h?4ATGPre@P!CJ43tmS4Wxc3cwOo*FiH(w5E?Jn3YIgVz!~BJ~5ufZl(QkPtjPP z{z$vlj6C~D#Y~-mOc}<^geqSbsV`nCfKYKJkLl7_!HT}0=;XW zsvn(9))pz~oh&=#m(7-X!{0WMEqfZCEEf~qG!S9YkIh&IJUK8PP{MQ~lcbA--_2q+ z1q1Zi-hPyekrW9kYYCZV$+6gS>e=u%FAK67%q>a}$%_iM-ij&Q3b2927M%nM=_N-m!O`Y`nN_{@+Ym zzJnA=GW2ti7bt_+eQ4}#l#W*<`cUqLi4qypJjpat0y61q)Ya_l$P%!n3hwgBHTU;V zY_<0g_DGk_5!u8sw`AYSQwUN-bOfpO(wLTt=dtE zmg^2W*pf#9L8>olqGGaS(~|<+;j-Ypijcd00Hfwac2*DmGj#EW`|)t*act(jIW)Yq z*2NL6a!_JI{sQtib01~Q)TWa^9Qk^~u`)Iw-M~G=z&=k9XPv22IaJ$Nnq4BC&2p|o z_eSRI;Ee>6%Pm|COH0hh9n2=wM>acn(Fu#sif>^nRsB=suohT{6J@%Sl+lz~5S94( zcBaJyFA_jD_QJUbo20>k0-^A?)*&N?u50il24{y&r@9OFiV8dToM!Z5W~jwUfUHpj zSIfHsSXA-fxcsyrgNiyuR#I~y!0Q+Rj%(L(t4zhQXE)8ns2O9oHog3Ik{`-@bIM}# zSe%+fU#zsl;HU~!XL2%ZQ|1>Z5H{m#Nm4yVhU)< zUZ~HpanmwJ&UCWPHg~1t}>n3d#8}5~M0sERD3usr3 zV2mfZ-J3T$LT^aT1~CyVR6P!SJ@4pVR1U>^`m}CU_RN$Ac~m;x|KvXB>=%4sdqnv{ zo3i!lPoCj9K`lq;--0C@7yvSDdPGIVi|SN2{TM`qW?ruuQg7aaSJtavy*_+6hCj@o z`Br6xILV`xheK?#f(j~h3^{9-KUFT3cRgl#d;8TD_24dlf#WqU@~H|`zR=MQ4DV19 zv~~VSOVz}sr1*3sr2*@USNa%xL3mi1^AYf>0+pHfI097h!GJlB*P-8bG47p@f01}t+P)0BCQncMU`mT+IjOQ!xl1;Zv1A04ckk{xX>ioK{3vzL8ao< zkq$D#U+bi-M#x5y3agyI#K1xsh$% zkAb`rGEi_ZG0Dw*F{*i|^luiK~Y8L>}`#LkYo==7hq^kc07M1l=dFXSY^ zADZSfWUn`4?{Vy7q1M2(nNc%6cL}RPJ+40W^~X)mZH#z9RP9Qs?eb+@YM@oe#_naR z;Owq>``BRAqAm}TY&3HEIS*(^$jln%U+rVNU_Z8>?PtLnSy|$fp_Uve)E*bL5E%PXQE#((S3=oI^uXa{px~9 zz?jYLhCHDq?wq1kMHflopm{C7qFMW8*0_e!K={-7YWp$7oYP?mmLC!0Bs^F%O?q8k z8Y-OEljDPSRT~i)E1dp2q48(rQ!&+46{UoxX%$z_Yp&qaQm1X9AO`Uu)8=wsmKo+J z^IEFqlyml^3-6~h!5(Y@w-8PZPo^K>Va7RS5IKOvC4mOJZW2T*aQXF_XlI+!_4--e zllJ1BVaIVfCpNL5TPwK6%Q&a)HP4D_&`Is8lUxd^YJjmbcFf$26b@3 zY+lqo@8^mJmg351-c-*FO_@srLigS#$u6KAmSE-1evZX&%EKaqJcy^?YK8pwa-5!@ zj{gxdb5+U$-)k;DNGF-?GNE@*4`xaGFki#9bU}(|N&}KjG2ev%=h|;1=iUuBF6okA(%@&U+gr{#5ea#<}qF z+*aowr+c}IIp#B=!2|AYZWd}t zp&FYoVuWQ~vX+SC7LQ<|Sc4w}+sgrmGXZ(3u@-)|2>+P--K7-UYaOq@=U;niQnn=; z^aCdJEx~EbWcG)aZO(J2_x+eR&3ffZPYc-=@E!(7!Rf)$c#I#LcMGhFY0FPUI5MFo zc%!p4i6v|#D2C#`OZsNV!Q}y>HiyY{XtnJ41iPKuNyZNNseheTmCNWJHCc4X3S2QmXsd16i=9+rVIbp zc!V;#J=usHs>e+?r(&MJb{S%Ia%o9J3IlY6>@-_q?<$-JX4yUys#f3h&dH4<AY}m)~53W4a z!(W(6s7Hwli+$44OF@(FrSHB}m2Y-lV-#}zcE#Afbu}^G`I`>}R_^`y1t9;@kzTt} z;X)1)UBnNe?g1p}MRU~LXCpZRbu&HxZnLQBp_}C@)#`2dBkAr{@H2T7sapvf4DSIR zt$wm6chgQT9|0p0Wy6*i(Y#QM9*4i^W#eW)dAdrW_#*v>HJ#Ka`5N&}Ay+yARFMh} z^xhpR;3Wuxzcp6PwMcL+`W0R;H!i;I=AwQ;Q)BUlyt!4)-*+9%5_tYkv61IsrI*{H z576#M_nf5wNs`3xj#8Jty8gz8G$j~f%Az|tJz8Z{5(Rre5ia+Qpd7l;>bbi-+R^g! zD{+`g^Y6O?!#!s4xhu_SzqpF-JPcc@MoquYAe$&+n-rpQ}; zqd=wb*D{KuCc`qCFRhFopf)Rka{+FY6~300!U4VD^`&v}Kt{*!iE4u7-;=at{#&sX zNah+ejK%8P4QT+4ePYIAjAgWyQq9v&V_+{z%I%VDjAM#3(fw^x*&a?qwz+XLt}sR4NuwamE+D~-)3TymD=x@*wNO9< zk)K~sQc+e~(X2sHN>jJvbWglYrqZs67v5W*w7gT9S^qCfvIrH}hu|IzxL*~|5wMd~NYmYsHXw~m8;j-PEu6(8NY zvbx{=?7lGmWc=P&5y(%7-_bni$wNn?algg)un>NQs$tI+mFtr4=gf1Q+TjnX>S8$W zI3Eri*=c!{2v+VM4h2NUt$_I&s@#U9YAX(hZ<8j(Le*NaozK+j9TP>nmXBs)B`~E~mXZ4<~(w1T0JrvLK&mG-`<@w#lN`=6m8ka$0Kja6f z*?tm&MPD6>-XQHV=@P0t>;`YWEdMplQh5k&`@U@ZXHGU&ajSe+>R;8OCP{Jc+ncZ5 z^OnxR?q|y#WB<-0^YZ;qw_LuyKKvY}#e~D$f3#GM>0J3L`g=z7Y@LdPHcG-k5NgU6 zBHB#Asu{`(?H(sJd>E2b|3bPYiaZj_!hQGM)#XvSI29eyuEs+(YSYfPV;!Cu_-)*n zMVVoqs7ZD4ZcMu50l-H+Qe{L35#0Ll`E3m5&#onX$5bDi{__`r*8Gt;16C*+9jgIZ z%aKld^v7|VoWxKVS`*#EY#tkD%xD7rsRN=Yd;Zu(jFaXtaX=$gGFHE0jZ1S%wV~}$ zgPsFe+i%k-Z%#(hdG;BZ?Wx3bEs4>1_sa1`g+Tp|l5teU!m8@SI$1|4W&FkEtDhru z|94=k*fvB{2IEGEMGFEYK0%Qo1~<0^L}VQ+)!986(@9gw3JR!@+wxb5tquLi>Mx9g z@vp4e#Rp(2wB}EVUs(dtZ<*^e`6(HHWh85rhz|{o`G^ncB0Nj)Zf5e^I+lRH>ngu8 zS9<1p1kT-Fw6+8hF+uFVvm`1vlv#$y)XgGr`(DaS%uXS0*BTy>iNHykTmObd(vgP+?hFjR1+;qUtXz z$Rfncfy}u!Jj!yafIVff5|-N4B{{by;7=ury3%kUD|?@j0M%V7O@j7QhzIoo44RaI z%_y$=*gtZz=pOo83SZ0sxTDhEWQ{CG_Ev19aqm1bX4DRp1y%L`DcATp~>RTp6I?b2azcX-(CbiGayrq7KCX zRDCnF_r)JZP`YF8k=Qt01jBP^CBB0f=V*iTlwUhuCBaj&Ux?P!&n;ztvYOT06mve7J(Uq(b>1$5X80y{kI%h)v`S0nXIS&vC1 zeUxxh3ikUjGhJ6Pv%gZn5DHP*MB|e8qjJFWQ*+D5RAR3-RFG_2s^j>iOT+=y%;FM* zzW3|TuAVQl&$raa6?noicKq4d(+#aai)Y=G66y9IX;@WiK5iYdRlH){=Yo!KD1(JE z0Ha~%zONF+zP%(8zM8)E&vL}>duR6?O0%AQzfQaL@j(WHRa`Dy9qU5nVnVFQJ6O4t z@CM3}%-4W#f9@o@fEeVK2V?G^Z``>1>qYYEAKRKoAXYSg->Da)s9f_Pna3`lyl!-E zF>;_+i*l4hW#E&b@;)8+cfCq8*aXehHG2FH^qI-_`qPWZp7$;vD{~hZHV!j@TuwQG z=NA=kPdh(wyM__? zCknVe?Nxki$0ZE0lcf>@m_C~H)eraB!3fCcQ?Uy0gneQiw!-C%VIgAEFRU{I&VqcMtFR{Iq_||tqEEw z!W=>b0r$6J#!=4V%`geO2NO|BhP{9RTgqM7OMO^Sk-cRCJir_lq}cDRnEv`JoF)Vs zp1l=MRgw_gY&pRk6*FsBT^hF063#d68oA<14Ml4R1+JyJ@|8I8$hb9RkkFU*VgFd& zahs?fdrFQKkm}XRYfTD_if$mfMXo@CiFP*3HZL}Pg0QYHW+#{J92)b zq+o0q5e-_?-WEt3Lh@f_#}57(sgkUZq(Cm}6yj)KJTf&xDfPFl6S5&B!j!CoX!!HGRcr3K|ipMs<~(K9Y*>I=vUXN$w_} zv!YI~*#_&JBYyx${UT)L0S`(hr?J*gXXr=0?T`EDK*@t93u?<15z6>`kn$DRkGgZu?yy(l?Nh;Ts-$eJVE>1L?h*s58uuMcBkDfmF&J0@NMk9iXl< zgZ=w>E9>V`umDpwx>Z zRDKImG;J4@W%-QVGybgfCDggfzEs7@F}&T!S+z8&z3g>bn0AHz>toBiX_i5vUMY5d zf+(ldoh%dzo}T zJ4>(OKpR0wFd|#!z)xYLY8UG0-~(7-4v0FyWtMtb5noQUyV~JvezN=f*nyUupy$Gt zoQ9t7^!=X09UA2A@XggK0L#w~>1uX|I96n& zwOVb80aisLU4XonKFj)Q;6YQpP{@vA(eU?>U0_%g+CFB$QlGr|_?UXS!rLy=j-x-sL#`$rU#qy=(4ubP zY9DwN5Wlo*VqQVaJBSAaKK;9~8?j0??g&l~J_n}VRO6EaruciOZSu;wK(E zrB%HC>|g%G*Y8tF!oh%RojeKrd*1bKbh}-L+Xc)bn#Hq5A5(P4>TO4{#O6!%oz%8Z zjtWA>BL=`=^^oS|oGAa?`Istk5e6@MV8|Qz+D7YParjq-;Kz6HI92ewNPBooSJoT5 zHJ{8-J4^k!rgwpj(=uf<0pxp??H+z!HE$a8?E_6&qT-l6e+9m`zZ0gaS={w0K++e` z$ku|fd%ttu_3M*&dsb)M$`xZIM5W^MxCK8fLzB(|8||BW&F_$(_eUw+wV8@UE6b3l0%-1)CFHC2 zEpId_Yxy`)cC?5080Auq0F@Y|~9}F4a zDlnqpQeuwA+50s&xlMb0C7>15EOZ=_sbCcWoP&3V0-h?_M>G$HZuDVB0$z)`TejK+ z@8v0wJN-_zxA}w)*J@VqA9~ValX7>+PtYOau2Z;-qj9u-a8(%Sz`?bDD5(nWieng* zkO2a^x_m(SU~SyCuX`tDjFojCd)}Z6r3qrBe29XJP<50Fu<&X%lNo78-Emhk8|oaT z^#e_OV3-4B#&}zxG)Bq73yZaZej}rMBTPI1m;sQ^EzWT65pdmQ>~GlE3mYSM`Bw0GbUQr|G{pQh6kiY7$wwh@`ZTf^H}Sc=T=&>M18K2(vIvlu9>+to zsmHIU)N-dZx~8<2rk-9-X>)ziQT!r=*VF7G<3WS%^}y_%CF^tKNF^Y+p6`@y%H}mU z_~?oone1=;Ja<=jK){K|gjL+*CzuX!BB}l;1Owi?jp$Lkz{?ufeD>F#k6VZ3Z zr4pdo@1UnXPt0z(xVb8(R#OH4zD;F@i0fkHx?%z_<8?Y+*WKrauyZVha;-;SqBn;GIk_!q&olosmRpp1>y}+aV7b$Pe#wQM4mmAny$Vfj$GPS zl-perev~r5ekro4`1K2pc&;vSVzzktn#QUEc{uvjI%cKHRS;;t1U9E09A!9kLK_3Br;;9Roz_a`SQ)iToFwgi6>(u zF_nLG56!=qtSpM^uBUmdUnZ@iLY4$P*35%UzEz9ZjNP;ozhTzBF`)Z3_GsgresiK= z!^?d0&b{j#52XUS#XOfcb637{*=$CwD&5apjd;ES@7;{-HfQW!H}2h{2a_RRGd;Wa zeM@mWUt&F#Z>I>eP2+j9(siw9?6br_k&?o+pI8s**B3A?|JHYaZHIr2;P*Q|H{+a15Q*So)SwY8W$%8)y@p6|Ag zG9Tru+ULKuZ@=6!%CkLPvnCa?r?0XH3H#x3?ZD+4WrZ!00#*Fc}T7_mRN_RM!v#YOu(B_$v1Hv}Cd|M=;>_LJ?VB!|VF z19Jq^`@QNK5x$=i0^{34&#qs4c?cIjdS4}Z^F8C&F*=cFo5)&mD|3+>&m_23-+PHZd4Kb>F2J^y zQS&8Y`03_aH*wufBsTDmk;P5Vw|_=MHkP0BlSw>PC;eoc+DMZ+c6@*Hz3$)llR~8+ z5a#C(TY5ltBa*6#|E4xT92t^K;?G?H?sU^%)7E}=1QNiUK3CC{pk%}TR3Gy?7EmHR z?lPoNGi4$rheAk&Ze1!fe|;NhLG)6YScCWxnB9Mq$aRyzGLS=+JofU8+x#*(%=c={Z;Xp4{G+|wIhJY3JN^cf?gZunrl#E2;P)(bpHm}Tr9mx zY|9R7L--04*`>ej9@knYhP-qbY;U?k5opG(mPh<`Ffg*)-0XA(Ki95$#{w5uUVOYy znGEQIPZ%~0K}38mz}jA1MX*kaZtT=IW)C&9= zNOI6!I}ntI3)OFJCtUU*?8ramQ2-H%;pU@mUD1sccpfryE3$6WC3DUnaqZoKE_UjH#C}K;vfnj%_tH{1N|ou&cI`-6lyJqB@}V1P@VFsZsqcs^NGay z6{`tJpr0zmLXc{F5ByHo9bH`{jXV_kMK*K1WO@sguCuQK!Q#+U7&YfMfCs07-W;G} z)heg+RY7eH0AX?yD^%)dJQ#$!hFa*mTkz)&Sluze*5ecpen1ju49{aMD_mQ|7lhh^ zlyJ(2gpl4v87tV9<_CNy05)^l;1$jZQ~lIh4_m$7dn!?~}P_bSL0GL%8&P+qlAwk`H(V7pq9ghQLEjPS$I%4_65xe-auHRKGD zyJg(ZBO7bl6(qLB$rZ53{`Nlcst*-GSj>;)e_4P7CvgwmfHKX=I$OGo>zCb!opd(iGsW40a(;$ZJ90Y_b+R)yVLi@w^g0?&NkF* zE5J4EnTD#of6C&yM0~%^bG7ZXh_8@o`Ow|!IZ#NF`mP4Pq11j&trybzuyGT?h3+|( zmP?0R?6dXK=bsQtdzp1s#SHOzE&qPg{o|psPII!@D*IjZWo{QhqD<<{Ypmr@9E&7H z(a)UURjmTtQxD~kU!ZYSyX~GBd&lZ}!DIc+LTIQ&aP=`5MJYo}*h8nH@EAR~71?>o9Iwm}S3nW9h!Tm9*9upH zeHEVp`?EN(x|#SQvqxR-uDY~NndT8)FUWdiD3ldWXhTm(mU6O5XUk7!@5eD%wuM=1 z$&4pFF3WnuyP+BmkX;x`aeNu#sHN!va6peExP&o}Mc4>gb|Vf{`_XbCTa$?of$X<$ z^@+nK#Bz~eWVpTKDD?$nw^OH#$1W;@pSH)~Q9bFNnWg@`Om}2sAL1fsAHY4NTF@dI zR67)g`i`kexl}-QMu9$Ek_1LC;d@0nJ)xh#)Z}9R%St^9*dBCp&j;!P^<&ypSHXna zUoA>`QCxTU^*|rbYK1OOta^2KviX!@PDRvjKy9ZVrMf2iQKMkh3 z6%F0Zdfa&2R?$N%I`}G*bK=uC8jgou8OVI?ubNh6E`U^H^}ZMF&_4bpgBFwTuE8Wq zR1JL#T~}kpwL(_Be?{u+M)1aY4)H-y&F-`N(=p&UAqr67-y!W1Nc5d=q4Xy5LOiY> zylxsvkrR!s6lV|GlG?|b?+FkBqeb~WswTKVgs3hGbd20e-6b1M7%;8-0#?n>o->8rtG8fNeNxIVf>{!`H065HKJboVb2Duo z?<=T|DLH2EIC4ok7-J!lcy3k|^R-3HuC&gPn_GBaGMYOd7!WnXP4kbQ218G?sKkhm zXTIoe08c_=vF5y!HhO&74E-$k^a|scn;xtCwu7_{<^+Apy@rg0cv?ZDcKh5D^&BSO z3o(`*ADqbqvp&t-31P;?!zp!7MdCq2Nu7dPRH%xT45G{%4~_muu#~X!C8t zO#1o`P`8K#Dt!-n#`5E*w;b+vSixHqZlxq0N)_Ps$3XdPlC$^u6?f!;$3qR>oK+0w zs`iQQGfNlVadY}paz(~dey=_VCwz+R3YY*Y;iJacL6Bj-I*zij6AqH{GA3B#HT%l< z4<`KwHA2xip?7Rr3;ny8B>Hu}IZwAwZ+&f8jwWULXRgNw9YiBS#x<(4XRj6fq#ktG zc~T$3vG;DLZh&g9;b+X8rphg_Uz-y;UlOh7PSUk#V40&j4fG)6&Pef6iIC3b`5mX! z8jVuPUknVR_&v8BtK|CGfIdgSdGRCwX2`tELY@T#$x5h54EVLF>Rvo}lsFKSG9$0L zCQAF=l&u~pA_1zlhw~D=*;4=l7yzG~DR|Nx3}>TS@h4Yf-n<=VQHQ}I*|qV(W+%v= zK7I>do-btTg;J77R&G%#56+HYN^;_hwxL9N&=X8>>)nLY z4_F1r7)CCKg}p^vbD_b%O4u1bD6J*Q*B2TlL`byOOF~;jRWJ{%l+&CK;jt}uO_YFFewF1c9gp@^vkECjG(0j3!Ml1AEwl!Z#o1vAAP2Hr!hX>iE5MeL z7>;iMcBPmq!S@1qwqjt#Cy4Tr zGXo$zNUTHyFh`9HG4~c$_nLE?$#Na2h5)l90^Z4C1sGY$05I4gNDCt(6vHm#4kD9) z%%;C|dWDl0CvijZpFMuGCbY9phxc1*K10#HdnXc6&b%4Fgwre|zmH-y$N3Ceq@^bTw~ zL7G+)3B0|MCdVd6Cjp_t(Ef+9H3Ene09psZYUD|YbL4}A@N4p!p1f}}PTkUDGE>{& zxow%r2w>+dB1GnO>ld15Nqz9Rd#BhaD$ogu13!n|ESI;*4 z7SV2$voe?+jZKz0%Ip7WRd30cLv zV0;1dd;zQRyQ|i*TkM5gX9dy~G;9@xQp1I^#)X^|h00llh_k|b#t1cSphiWJi4;il ztmw&EktTbwjxkVIwAg^6IDDn(s%4A{U##a;j501ZQYf~LEw-;H4kHvhw3k>KmuO{` z*zJ^PojX$qC{HvlXF>uqjmy)A%knA8!;s~;`SJ{fid3ia661=po$^Z2ieRM*Ds5oJd_^gH zWjT9AOnU`~dRg~bC9DpXqu?w+QPm$%wZvD&?^G~2Up1y7G^|lIa#l5ETzyVgjn}W5 zZm(XX;F_gyn4hm+Rj9E&tPWu z(>7CmfWH*^RSDEbEo1Hh= z+$poiPigDe(Tt|dbv?Iv$(TCs0Z60%zpP1-Ky+VCZ*0 zL(@X%kfspd0bs!h{`q>DH4sD#=!!%Dr%bY}CV*4f=DgaZ?v3l9zjT02=kD#R?y-gL zAC&KRufN~ae7|=G{{9?txDfHL2~x;a`qapu=Bm@<#xI8!I?k|AyAm!qtnKl9}?(H z;S8odS4-dN6F|6}3RUjquS!V0keX-ZSa zfXS2~4B8{TuPFOmMmn$~4Cs*t!pPVn1+jDF7-g2Sgk1RGbc5nV!;|iIccmZXEvo z`uT||yt(sQbJcjS<0qTR@#;(1up)fijG5b4W4>LF2Mb8ts+A#sjQ+--urxnvGmyNTgI}JmoQIfsA9Q^=%bBhmollVHX{%o0 z>L5~H0RFuC{%5hy=4iocbdBKA_IJjc?}IFg3Xt~_JGy+T&Uu~ zq%vVOP7!FEH_1%|3*!Lx_(^*l;6}|PCyI=8&>w*Us%vku(tza^zZ59dN&SOMcN31N z*8f)kbPtR0>^;`<&Hv#2{ReJsM5-N zW&QyQumCx*0DQ0jL68Hue$oo?=5vnH3XldlKB2XHO}BQEegK=6Fv?q?7L@;>hi zpa2XX@b0eC^`6qVKJUK%0Wx6k`=0Q+9`GLD@tyqv$_@~ZU;(Lq>=;h+Gs5id{NGs( z?Vi5C@lEaBzW>#t@aPiU-xf{Z4FL1x3E(sD=;7|^982Wn4)k0R03~4Tj;-z}Edymv z<_rJuJ)i&+@aiXh23NlTTF(by9t8cq=2b8C)6MP#-{vxq1~TvmxDMwzkOOUA@CpFy zDZKzaQ1Ez<@4Mau44(skK<6lM@bu2=crOEmU+|920ZSn4jvxX!;PfiL@?Q`vE>8*0 zzNa!T?KSMytU+qOtCb*qT(_89FpBXqn z-CVB#z7P1gPUZ#Q0}bEi^1kq`?&e^B?__T9QE&IOKJP(*()-TtD4hc`u=V$z(j6ZJ z(=YIGuK(*Oef4~h1K-aF`+f%5zxC_i**FjfxYP(xAo-Jz?8yQR?0oq(uEXsO2!9bj z9e;*~BR>&`4L=WshK-7c06#wlh6a`Zhnc<2b)t*j!9N`KE3RnQ6Qw2E!F+!=M0Ipzlk`<~`tz1T5i~#YftS_1@k9_c$5gM~< zGF?P(g;fN$IQ$PhHW&gF_ ziY&J1;)^h{7(fR?#fTn_x6xRmjlJ|mqFu|#XW$tqd=SJ!&MaW$Li<@m-!_L`cHxn8 zDbRy4j2&~>J(^03_T1a;u%5YFc60P@R8^-i8ktBf7?iEPGsmPb74aZf+?Vv z15I!ls@+uPOb!XQiGvCg5py4@KJt-6r5}BjON2t<1LT?z`~DEAKD`T>tx-wDvxj zVZQtx(?YSLB=IaW3n)6@T%FCwYeSiB#E*~)FH@vO9IPvm1@mUC@x~l?e47Xu^}CS* zvD&+@$oX0^(RrS@;84T5J|k&Dl0GvIWyj!5mX)*v6`HYzEGjq;_XGd<)`Ekj?d z?D5l3M=f>K7KDuQ)mUeZjLH%i3Low;~%s$G(md_^Z%8`AB`3dr8NpD z8iY5=>w1|s5L+{R@tS5SZbMUSEBp4`ckg{K65P&Et`P%0BKhKb1OpBdA)sO>06d-y ztZL^cIx}Y|cI!Q<_wc9!_CQ7e?+2y=B@A0hn1~3z$G`?U5NhX2AJD>;4~U`0f)eZq z3=+5pzX8JoU}MHTc(wqu;b(#gNgg&(P@o*RP(uGW-3hCa279D1TpWrBNgl|<9{P}3 zbCMtiKkzUdjw^$x;XoB6^1fn>4?dBD6g0+BjSNld81xa)Ig&AfKTHlBhjHQ1CTK+g zF)C7*YX}UMxCe~=@QrYcqm7P$M0BxZ8`W6AfxNMRb_8K_NB>fQh!l{927SOm6Ub14 z^!T$n9%EKdA%?+}(MM&d%2HeeV6a3qfu)&GfFe5NeSD;I+8>H0d#3taFwJY)^Pcw9!YtEQ zOK$oHc?CLUJk$XgRfPn67^{;>hoCOLn(b};P8qhdMs8A4)XE0Ag^hjDE z`LQcZ87v)FwfpW@ZHlz#{X+x^DdwcZj8+o=xbUWRDrqi4X}V? zgoGp%fCDffZ++RhK6=>314uZqf-`vEk_`C57;X^&kWd9ExS#+a1~Cx^BY_Z`c*N%@ zv57@Y;uW(v#V#%YiWQ*Z70LP3S@!`p}3@w4xWy=tevG(U6X`q$f@3N?ZEUn9j7O zH_hozd-~I$4z;L9P3lsc`qZ)UKnDO|f&T`Kz%{UrwXA1N>ss6T*0>%)11zvRRQnpz zxDK|khfVBa%UTt?{k5_IZ2)6C``OTr_O_C}>}ub+1Jcg6wzpktOj!Hdd5b*x0m7Ff_BTB-u8AkzU7_nb=RBU`@Xlo^PL1JK%om%uyuaH z&G0#UzycC!0TH~4-~=a_Ll)0C#xs6#WN_T#8|Qe)HSY0`Pt@cm=Qx5tFaaY}AP=%` z0JR%V^Y}J^37uSUzKE*@IJu_HH4l1#BTxXJ>Kt0@bAbk8E%c@jm~A z=~(Zs2&!OosoM(&Q1H1#L@@KLoBw^IT=%-xa4-j0yZ7vH&*~StuJ(MPKzp-=q-Z+pjOXp$X#1g_i8k==eQ4V82{B;>@}SuDyPH83bag;5(L1cD~gdc zzoIF2L{>h+D96ws192(z1OE`-fLWKpSd3D878NJ_cY=Zg1?1&^pK}jhazf6B58)yX z>990sH70Z648If(!ZSB+#X`m~e?Br!`Lh6c5h+-7PLT3eL6|C@bPR1L5ub;GRLC*m z!whWGNbVOy>o*TxRDRHqSrY<76p}{ykW_dfgvl^Y;#3dV&^%};Jx1g&6R~hrc!wMF zdugLN8Q30N=sRBshHevxJcwA&a6;FU4_18>>hnlD{ z(WN%cqYuSHJc`wY2qGB?kx=?TNS0Vbh}ap5C_Jm!R>&|s7sw<9)epP!hOlUfvd9dq zvj<1EiNfeElcWp>BL9iapnk50fXNU%3vn_AvKJ2Git<1}Uh)BsI6?b!i~7Jb)+jcY z_z~H&L&I2(?qUQDVGl+WL(hO%e^fMxr8)^?55`~*%Tt4`m_iFtOjgo_@o`Irs39no zfq%d&{CFk3s0=IB*40nU#9tELABoFz^J7r`+Nl=)O$r0<51U6}zpt%w{shOK8lP*vLp_!UA;Q>F81hrS1 zSd>T|pqHvynIq&SMCKYFA}>Y_~Aq&y0xI{Ktinxa%%r9g_MNvfqW PdZk$ErB!;QfdBwI)}H8S literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/customLogo.gif.png b/pdk/docs/porting/images/customLogo.gif.png new file mode 100755 index 0000000000000000000000000000000000000000..3322fed27ca4c907234608eaae1170402ae99b80 GIT binary patch literal 3863 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/stk.gif b/pdk/docs/porting/images/stk.gif new file mode 100755 index 0000000000000000000000000000000000000000..9d6db69823e382fc2d2b24f1c55f612087e94416 GIT binary patch literal 15613 zcmeI(n;_g=5iWe_Xpp^Xj z{X6daHSd|-2m9!n*=x?8>+E|)dEvKauTjuYTmb+m;Gh59hyA;v{ey{y`M+S|{zHgM zNJvOZN=i;nPEGwU)b#Z9%*@Q}|3KNHP$(ZCpP(S0u&|)8u&|iezlcdn{)?on?7zs$ zDo83Q$SNo(sHmu@tEY4P z_P@A!dV2c!`1t#~`Tqm=3<(K|h=Iq%#3ZDIq@<)|WW;3ulb@2GpI`h>MMgzMMNLgj z!#^#>EiEk_|Mb-K^z`)qGu$vdJUsr-bjS2R%l*s$tPQWNt!@3YH@&yFcX)VsdU|?s zadC5VbANyT^z?*8BLBBO|KI-uD}adv*qM?m)aCUBVUlnfjn?H4gb^|+WhvAb3`LQ@ zvfmi3FC2-Zmx*Lc{0jN z(2k~)g)*&5h_Y|<&+l~>6R{h7qXS1TzW`7JNv>GZNh9?fLW zQ%m(`e{Th%6}03)#C8H@z|Jh*AzCUsSEvRCn* zXDjEOuLWE_+Ku9yhiq%(-_)5!2#bxTM)KbuGg%zK@)^ivcIwPwy2pB8h^{R|N`x+p zehNhKkPIBB$8UF#sQPkzkY=2sYe{S*$-kc>#s`!`P$nKPg2iy%h6u2S+gZre1&G+R zVYq#)1kR^6g$PR8w`DPReLg?5e2K?{NYqcp21z~aAA%B1tt&XR4_1$vb8w6~_6St? zq>h4J>}@TGRY=DMQhk(=4~wMOiC<+AW$r|bdBr-|AzA?jYbK#l?ow>Ea-`4qO{N~h$d)EC%W*Qiym(viLk zjN0wKBmSd}0P{xK2M;|t)b#OvVW%0;z&oppf*jepOvqB6Xb<;3O{Qc-rTUeOX)t(O zbQHK#|5`v*Ds}o=oO)U@fF>%(7DOR(F3=`P_45K|Ae=Br5R?eLohIz@YnWCMJri2= zC}g9_3_gqr>c4A2;@ExHlsh(G@i6CHs`k98xKB_Rp-G8|Z598#nH<(iJ*Q}$W0@fQ zySjNg@I81hGPssIB}3jhqG=*Jx1B!*@BPKie#-ZnO?L}5x!cl)AFEfV=l4`z;c$2O zPVlz8+-*bkw!$ZEV&$!-^TnX|)Cl2?j8|J=@I61TJxJ<9^jX5{%u^HS>AxOT7zL$5VgZv{sO z4i~L)iV-W?$gDipUm2X1^X62e4@m-;{BR?fDN1J!O2{KUKj)u(g3j>t2F|P)70Jo3 zkXYeh4tbTxSs4q0@7`H=rl9}I_b8~26yBG%U30ox8q)mM8xb{NiR=AQNH26eQUSOz z4pL$Mi>;W#Z6x(YGa-?YO;KE4^CmI5iJA2chk~m6P12`ZODk7Epyt<`QH1@X0w!={e0beDi3tYg_y(q(h`QcJUJT{xTe{t2mX154K4 zBI#Q)3#3}DU@r=wS&~2B97Gpg4AguCNS70%@(AyuVufhS&?%Am9X1-w2&%s8oDcLe zpF_upi3CHh;3Kl20$nM)k5FF?-g7N}ssp9>h34>*tX>Rkp<@gQQ(({Ov zjK8L*J0Ii%mw;sPra-EPc`SNyphA0~cBhC{34fgwM15SlXMPdePtH;GXiYs_da2H+ zPSTR$Ko3VRAE>{BqDD6n(p})0XaASjkm!d_HJVU%#uBGB4fcGXK^{b+c-+zQU()BTtx5!)B>ipI zwHC*{^1ZvO2#VD8HghB~j&Fg|DN3t9rti?$Y_Z*AaF(7*8goP>IrR&;K4w@o2`&$f z+g(xxksB>z8=qJ4HqtL$o{per{gssQtX$6t=*=^VafAqWZtNMD4kTvt>T*!(e+dZr z_V<9$6OUvkx#J#HN3xv2oKMe$@(%TG4sH}P0pb|FLleD&^THz0X3b%3qMq3CrKhB; zIi}glJzO86?1Hj=b)f8O{BRwkbVv}}gdzWeq_yIqz&8OP`9p7IQxzEx$uM$a6ZmS? zaR-3W3t&m9MWQ4m2jOY_-6nb|xP1D&_0OGjs2_T$CBl$PErQWEujztiNB?ONC9^ z+iDj-3s?OTvR%{H4tt(DZ^q2xU2cXOeOX^a`H#H9+CNggvP!Fc*#py49B%1kszaX( zC`Rx9PffDT%gRjE} z$*vr})ZTrp0mi20UJi8}$sZ?(QlU;u$bHk7Jhp09WAaOZI*?O3`Ruzvta9bnFZ{>r~xpZ#**AEMfgJbY)QOEak3hO8p^Eo!i9 z@oxG;$L-#!suz&?>t)RlOTsoZE@kiN;K75l_gORVqrxmeK{C+53MN9Yk4>(x7Gf-EWr(-pH~AgLzoR?~@>JV_>%@aZmn{u` zYvBb3D_O(%0UDw!q_ATBk08%?$7oUyhPHa(uu%JUssHZNz})PVZpWm&#}xdw;FmD6 zXjjc1`p8-0)YovJ;Fn5)QAjW zZMq_W4-&oFC9lI(<=r{&oSB8eTnMjS)s7E86g&bRI zQ@4T%4$w)!BlM>rFCbG({YPan+rBRP+s$dF@Zxc!Kmm55d8Sh1{(1>Zt=*H_!(H@ z#9)kiedH&Ggl|^*tYms`R}!)h0&M1ha!7Tj;}Xr)&lJoQ2~$Vv?Rp*)jHwKQT!j=`F5xtcM9@G@xKhZCK56Dx;wvsjXN5Jo1e5FCm`3oJxpGn}}@((t!> z(@6T-C`j@icxCBn&!#OypK;furC+T3(+g~)2!7YBmj%n<`u#!cz!O$%A>NV_z3N%v z69d!H%ox)Wv;%wEz5i?%<`Y5dZjCBnnxYKTCHB&Pmttw{8K?a@(e^q)gd$-aq(0>7 z>1U;mQtU+t(zEfjbJdL=W*S$ljfc+h>#Zjt zB>8U8SF5y89rVGF#ZZDW@7owvn2&w)a*-M*Q5yzWeFxA9Bs;-Oj^wb6!_fZ)GwBLR z-j~bnXf9A0(jJ4AwBMNueEkn|EXR>7nCXr*n4{=+wNTy6>XD-;b;;67Nk^X{PyJEx z?18f1r*-y44sO4b6Fp;6lEGoYSuP$^@FiDDs)DPW3nIx&yUo`{0sLa~)Yx%2Z(u>T9%5oQL8sT+-%uiWs zpSDVB|JZ|(lvKhT5XMysl=WCN90>YPNZEZ6JyioHQL$z|h#cTl4~!w3prGiaI62Mg zw9dm4X%ws^#zCHfbqIk2>6Fs0HAeLfnR5;4*A0~nc_SKe)5FPmeK41Y#?uuSr^qx` z{U$0d+Pen`sboWDK8ULhMfGP>JwsEPR8xgn)396fFcS)SUQ=2hDt>RI|L-PU{xTWE zW;2v}3x`&d!@L0qkZ!g%+YBT|2xKE{hH$lt+O(mHHd|G;x(&DL&NX7tqp-ozQ1!{v zbkI-|06N7G$tVhQ2MWtfO6#ZqJkt!n=76zck0%gV@jX}-p4=;rI&@9iOFCvBh_VjLHnHnzv|DhdpJ6jGLV_+YYHC znek(yT@w=!V;ddTgS5wDM?>s_9XlBPkhTG(ev+Kwe-CE;LTFp7-#)r^E?j?0ChBS5 zZ%YkrEl}<^hU+e_T1sUE{8#R={x!tbw$IMj@)t$lX^Au24m{=!87(diAWvCZY*5x{ zP~LA)A!|^nYfxb$ny+_Ioq9-9YzPJ3KWNjx=P+d8W_5I!mSI(0L!}2xEnhP1ylyUi zV^nc6tnCgidH)si?wMLxa>&DI#LI7xqYNzOI^wr6qA=NFGFR`U(IYx+T7ur~qU5fG z^wdv^G{S@FsTBwB>Q#^!IliVZf2OK`DelsA=p7>0RxZ|5N(qv!h}jIOdaDO_{GRYJ zWjv%fg;1_032TJ9YHWjH)KR13?v~2UapFE`h)G4I$B4eI3(`SN-7PjLfi~G+G_;&B zIetbnnWZvqL^Df0-uU3+TLZED4cdZ-FAf=j*iJk>`uZO1>|Wi)a4Onn^v?_<03 zMr`KRXvTVY>O7kIGHd49kK)h941k*gnMGyb+P-HtI}D$#&!3ItpKZ+t(W(P+t7+r{ z0fE%idg?$H0JR_h7|Aue=15Dpi7HD!cdmg(J&Q)_I@gmhC+mtz)lDUMg`$L12hvqj zGjP)~se-iC=SjqA*l9r8S7==4)I3uQeAQI1rWS+2W9HWyf(Xr;uLWT)m^ z-4?a77hCHWwKf-DvKBTOmb6rt-c3>K`Y-FpP#gI#8*@{c`Y)S*q)`7$S){E*)w{rM zssweNMORk>U7=~aq5;*Fa001WOqFRUxOqECi7fbemr&7ziaI_Rv5Iy1Q zPCYE ztY`AC*J-Th;H_;YtQU*Nb^l#&C)%i`S$8T~-GOhkPSH+wuiO0Ds6tj#&Wmp>;*l?J z(yUZ(Y}9W~SFdenQ|_v6q?>Kjx^1E}Pow<=(gwU(VWKxUJs2pV}Ns*zVcf zLhs-H5kq!!P6^DRJ&oDk>fT=XxN$H=Ll8?#bU}@dzu9)Zg~MY@)ay^5d9eA|3S*L^(KcygojovV2$Htmy33rsfI>| zmR4?h{i%8nT(i$@Os`72hT5}*@$%zu_A2ax)&~#pMHS@#QRzRYJ$;^Cjo5vyi)~>w zdTa3|iRxXu>D~7MRIk+zT=0)*XHjj$k34GD4K8-QbM~F_Sv8S($MAq{ub#t@twZCU zBapy+WX~}g548l(fn?3mSCl!}6fGVhkmL$L37~lw2q57DqSQ4un1N8@Pq7KB1#S+K za+a6e?AZHGM-zw*Vkp((iA`{rm1$=OFSZ7Z&qjGD@p8^4dG?yN&SqaIC#Jz>&NIsa z=PNnqYdz;1TjyIZ=R33)-)Vt!Zf7}=y}1BIo$RF{uWXKX5$ zf9x+qY%X>VFP^p(an&y#a)y8(DxY&4Ky;HBGuBuxkcF*e!1k5L?UfbLwSk7M)+~^b ztD#%%dRXl$@uGow5|u{1QSb{23BgUW*|jD7`agr4Go;E5^pc9_9fU6q9HKM*+;k(v z%f$HZ(x~qj-@&hUyk}C|Z8T!PJipw|iC>+m^$5J9Iz77$bNi(va-;h0RwcJpC+8Ks1501sd*mtw;&giE{w{9%qGwX~BH^kv1GWxP zn{puQd;ovey9=tn!V{q)QD*v>d#N?|oBGdhNwNon`m)~QvbbZ^9vwQAhsS17T@@Ie zejr-@G2=csc8Npkyh`TovF@e%I$7#8-Zuc506 zFN~(vNB1nO^fS_Tbt_WJ7{jiTD!coT|F^9I*>?E==nI;VM1b0_gw51r;xL7V>ojJ=NO91(h3)vRSjgD8E!;Eo7sfGg*eHd| z-_C}TP;s>59uy2n2a(e$M(*E`o@!Sxh-wPy!+tJ@v7w1fj>FDY%D`mC%%bsyBTY`( zU#G}lGbW~@nz`G>TbWK~zI7V+kX}Hyg$DJP?ezoX6s%Qg!(RGzRSDqv{ML*q#m7s#!vRk6SXH*=K)7JuOv5gj4+koCAf+6?iOo3vqtL8D5clOe|}sp!&n-#nR6h3bMVDEm=x#BOv}EJ1^1uhB=XQlYk3 zD8d#suZ=PH!)}<%K4ewdx~!p-%Q!0c=`5>rMGKui7&szco%0w zG;o`LMZv6^eK|y29{YWaLy(2T^KQ3s@4T`9P4`n{5W$dM|E%EldR!)A?i~qyvzs^fw`}t;m&1WiwGAZ9FH!( zj?CjdnYuEg9rSB$8#e5s5mmd+gk{lL<7?+5ozIFHD34!VlQ8}jWc=?3wZz0p9;(Z` zgM;ar$2;!u$?siWX)BD?tNR9?F>GEi=qdWwk5^rXB4|#aSG)RC4x=Qfah43O3bQyZ ziRMAQ+)9B5oViM3Rz=97L3&qqoGn6jOsW3x68dVm%8vFx2t%HwAXk?5Y*ueyjbN;w z0o+WZ=2J49y#!%)qmR)Sf+mO8$3#51HW)sXGJC=sfwhPIQM(|UUQr!;$N~Ej-5oIk zI5DRCVIqrpEE_(n%4imZJ)15h5t5e>U0+XkeDizwX$~4hX=b>^Ia1uKjbZFDH-SM4 z%Hxx^jP|e$r(oI}j;D8vdF}XvhA4uOWvf>2Q&!OtHicqMnH%pH>hUVfUnFO+3if!) zP1fAvaTROXgw6y@t`r?QePV%F$QLVanPH{aA$K0ngiVuJ;_<87XmL^%maiUfYjC99 zGD?Dqq{ts9mtaWE*!Ci8q3m`r4rZz5<2Vi(zLfwEHLu9KYq-CoX@wz?X65u_|Mm9VnsYZPTFE4dB2i(+q`?z(VQajE0?>O_Hiczv<-Qibl2z4~Wg<*%%;5;}1Om1{*w zHp`_dn{G}>nE?XH8x4*J;F5lC8uuE=kw}>J@6)NNbHbDH)GPN4@GgN z%ewz-#*|T?G)SRt=gs%_6z7&-+IuQ!oLzy_KInqs1JuXWXBpUG_pkE7e^tbIMHoXR z1PhR7$KlvOK-#b%0FtNk_x0C#ygn2(fms9<^%EAiEgXgQuN`qK{d|J4q>-q&txi;W zDM%d!?EJ5SS7}|&D27*>sD|iWeqZ=zJ&NM)A4E+5rLm9pb-h*gwuR_A{rIwHV>O<> zEkWl>{iTjCexoEA z(xN54zYT2%6c^6+O7rqd)a&iKtyaH3)rJ>$u1?;taG9inJkNyCUA+G;2MDU20~){d zpyDNwsLl)ko2hmBT{~$_jV!hWpO8Y=th|J9} z{j2j?Km7PT!PU-EZjAL(QtonI2AM=#YP3tM0flWae;c0Y?{ zKdVPSTW~+SQ4Pr~f_=RYUAq>;gOM^%*M67*TzIQmBIcbgA+UeOOlDmli?!mhcZip76-(G!zF?nL~pRC6yUO z(Uy%dAFSWWz7%E*)M9^sLmH%xot#AQeh)ilqU60;y~0_qVpF*iY1EEwGRZEaxTUH7-$gQ)19WV!%dWy&+Dz&QbKwu`0VNugbQn>a- zkJ!f7QL)lXmndSz^o}9Mm9gvuG3m%rT%{##WVmnaxqhjF zemBAvP!&YWgxwZ;O;aRAw;LYO;X0C5Mk}i^@@D)!!TJcpZQq-xk#dF7lnE+aySUJ< zq3MKZ@r;PW$D$s>*gS7s>HI9klTO-#ys2xV{BY8U+n9lJth}Hw7=7H-}g)sR`)p1x9n>(^v;?2;>m{NB!- z-Z)>N@Od~^c4t8aunkq3xxR_7p{Q0enWYIW!iE}?-fY52g*GOMv2!PCNnxx*FtYPD z>Xeg3VSVp>NXVmT?Inv_~j1J78S207|D@GeWGaYNc-13Sky zr+OVH#}BXRI!5D$bvs=Z(y+}8KiX0v%_)O`nVKV z^ZDFbhrQ#;<_NhYQE)Ys)2n1Kk|rOECb0yk<)N4l`|6KHJWtv*f6%0fo$Bz#=Ln{l z!GEP7R(xa!+@wo=gy1=N-W*Ef+-AQyEmxG+at=S`1@GF;+LWC zVn5Ol$8llodbp(D0=QvV={hfK3+OWAxgsK7pC<`E z9ZeBnz^_3gNSsQJp6ZRkYYMaCOYo0_OGSqCMPyjzIH`UM_FPQ^>64JG4wkQ$^%1mL z=;xfTiUqBr;H;f1VPV<-4*Xaw^>RHw+h1LxgR@%D-s-_w{ht@e33`Kve_rx@Ot8VNC8<8??ym_@T zAXGnS)i`8jMDS@tC}?A}xo%9n5yS_Fi~@+8jCcl&1V~VF=2vG@8fJwy7Z0jBV4KSy zONa&#^zoak#hYu*o9jcH8%vv;2b;*PyUlIT)(&`Umt|{DXzPdE);?_Oz-sHzbL$AU zr6hXCD-{3rkKaT!pk7C0#!H-Mc)M~gHT6WqcA+0q~zHhqT8-z~I9 z_d?D-g=1>I3ZoxF1H~X8r6@0W(Wd9_KH+=WhZoH1hFw8O$HTw-k(n$eDFdaMyfDdY z3a^8P=%r8$sAKqEGqB|hBRwg@$9%@5rSd&gh?&!~q@IePffi1f>_}4i*CcZa$>$OA=nBKJf0)x(EK@s) z5*^3-OtF#&vjd+~YqfLKsJ}_I&@n^iS;QMN%J8R)MDp4XN|JF+fU46Jta*y1$9nAI z#MWs(u>*jK425wgV998k`VN(Zt^^KMs-`~es}!!B;+;$r>*@CasvYdH=~t;*n#q-p z8NHJ<7R$0D+Tf$v2{?_)0kycDPPjBJl>_8em2&172d>(QO~I^Hw?fY%(NXefbU%Hx zhx}2iB9@fBVO|6^5}`5DL74Blm#=eQ|0m>tingb9zy1Cyx!DZc(9croq~yY*T}2`f z`ap7_VQU^hrE2}*kUui5clvG?|JL%Y7SVpRR|5|E+_i%`jrlZ7#v5iV^$0m)Vtu^N zI7DPbvr9WxI78~?p|d0Dgn4;yNA%wL=HS^+r!&yJ`r!V7;{LR2?btq5k^`MS&v~

`5d`*;>g(>q*INw`B&m#bmU9zv;pLcSGe6W`G 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/stk_display_text.gif b/pdk/docs/porting/images/stk_display_text.gif new file mode 100755 index 0000000000000000000000000000000000000000..b737c51f323465b48c404163fd0f707cd9c21bf4 GIT binary patch literal 10194 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/stk_display_text2.gif b/pdk/docs/porting/images/stk_display_text2.gif new file mode 100755 index 0000000000000000000000000000000000000000..cac707b1e8f0820e80aafe236dc7cd7a789c265d GIT binary patch literal 16748 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/stk_refresh_reset.gif b/pdk/docs/porting/images/stk_refresh_reset.gif new file mode 100755 index 0000000000000000000000000000000000000000..dff8d4e9ddfa266f708689ce3ffe62090d2025d6 GIT binary patch literal 7711 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 DNDbb( literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/stk_send_SMS.gif b/pdk/docs/porting/images/stk_send_SMS.gif new file mode 100755 index 0000000000000000000000000000000000000000..67fc1a0c9e8c6f553d8f58b1afdfe256e90f400b GIT binary patch literal 8411 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 literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/telephony.gif b/pdk/docs/porting/images/telephony.gif new file mode 100755 index 0000000000000000000000000000000000000000..8515730ffb4390a00c6af95d6bdf2df5a495d751 GIT binary patch literal 29095 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 Kr2VuI5CA*f%&0K{ literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/images/telephony_solicted_example.gif b/pdk/docs/porting/images/telephony_solicted_example.gif new file mode 100755 index 0000000000000000000000000000000000000000..352ca980d633ae318d82b202f7e03bf164593075 GIT binary patch literal 18415 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 PiVllm5ksK>fZYE9wAG^D literal 0 HcmV?d00001 diff --git a/pdk/docs/porting/index.jd b/pdk/docs/porting/index.jd new file mode 100644 index 000000000..9d23fbe4c --- /dev/null +++ b/pdk/docs/porting/index.jd @@ -0,0 +1,28 @@ +page.title=Android Platform Developer's Guide +pdk.version=1.0 +doc.type=porting +@jd:body + + +

Welcome to the Android Platform Dev Guide! This guide provides an under-the-hood introduction to the Android platform, and is designed for platform developers and manufacturers building Android-powered devices.

+ +

If you're a software developer interested in developing applications for Android, please visit the Android Developers site.

+ +

About this Guide

+ +

This guide is divided into sections by logical platform component (see the table of contents on the left). Android is a complex project under constant development, and the level of detail, as well as the rate of change, may vary from section to section. This guide will be updated regularly as more content becomes available.

+ +

Intended Audience

+ +

This guide is intended for engineers who are proficient with building and running Linux on embedded devices. It aims to provide explanation of the Android platform rather than Linux or embedded development in general.

+ +

Getting Started with Android

+ +

If you are new to Android, start with the platform documentation on the following sites: +

+ +

When you are ready to start customizing the platform or porting to your target hardware, start in this guide with the Build System overview.

+ diff --git a/pdk/docs/porting/instrumentation_framework.jd b/pdk/docs/porting/instrumentation_framework.jd new file mode 100755 index 000000000..fcb006b3f --- /dev/null +++ b/pdk/docs/porting/instrumentation_framework.jd @@ -0,0 +1,143 @@ +page.title=Instrumentation Framework +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

Introduction

+ +

This document describes how to use the Instrumentation Framework to write test cases. You should have a working knowledge of the following:

+
    +
  • Android Application Framework
  • +
  • Using adb, am and various logging functionality
  • +
  • A brief understanding of the application of interest, that is, he names of the classes which handle the intents etc.
  • +
  • Junit testing.
  • +
+

Each Android application runs in its own process. Instrumentation kills the application process and restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs.

+ + +

Understanding the am Command

+ +

am is used to start and instrument activities using the adb shell command, as shown in the snippet below:

+
+> adb shell am
+usage: am [start|instrument]
+       am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
+                [-c <CATEGORY> [-c <CATEGORY>] ...]
+                [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
+                [-n <COMPONENT>] [-D] [<URI>]
+       am instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
+                [-w] <COMPONENT>
+For example, to start the Contacts application you can use
+> adb shell am start -n com.google.android.contacts/.ContactsActivity
+
+ + +

Writing and Running Test Cases

+ +

Each instrumentation test case is similar to an Android application with the distinction that it starts another application. For example, have a look in the tests/Contacts directory.

+
    +
  • There should be a Makefile and an Android Manifest file.
  • +
  • Tests are located in tests/Contacts/src/com/google/android/contactstests.
  • +
  • The Instrumentation Test Runner is located at tests/Contacts/src/com/google/android/contactstests/functional/ContactsInstrumentationTestRunner.java.
  • +
+

Suppose you have a makefile with Contactstests as the target.

+
    +
  • make Contactstests: Compiles the test cases.
  • +
  • adb install Contactstests.apk: Installs the apk on the device.
  • +
  • Use the adb shell am command to run them.
  • +
+

For options and other details, please see Instrumentation Testing.

+ + +

Exploring a Test Case

+ +

The test case described in this section adds and tests a new Contact. Note that you can send intents, register intent receivers, etc.

+

Instrumentation.java has helper functions that send key events and string, for example:

+
    +
  • getInstrumentation(): Returns the handle to the instrumentation
  • +
  • sendCharacterSync: Sends a character.
  • +
  • sendStringSync: Sends a string to an input box.
  • +
  • sendKeyDownUpSync: Sends a specific keyevent.
  • +
  • sendTrackballEventSync: Send a trackball event.
  • +
+

You can find the test case below at device/tests/Contacts.

+
+private void addNewContact(String name, int star, int phoneType, String number, String label,
+		String email, int emailType){
+	ContentValues values = new ContentValues();
+	Uri phoneUri = null;
+	Uri emailUri = null;
+
+	values.put(Contacts.People.NAME, name);
+	values.put(Contacts.People.STARRED, star);
+
+	//Add Phone Numbers
+	Uri uri = mActivity.getContentResolver().insert(Contacts.People.CONTENT_URI, values);
+	phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);
+
+	values.clear();
+	values.put(Contacts.Phones.TYPE, phoneType);
+	values.put(Contacts.Phones.NUMBER, number);
+	values.put(Contacts.Phones.LABEL, label);
+	mActivity.getContentResolver().insert(phoneUri, values);
+
+	//Add Email
+	emailUri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
+
+	values.clear();
+	values.put(ContactMethods.KIND, Contacts.KIND_EMAIL);
+	values.put(ContactMethods.DATA, email);
+	values.put(ContactMethods.LABEL, "");
+	values.put(ContactMethods.TYPE, emailType);
+	mActivity.getContentResolver().insert(emailUri, values);
+}
+
+
+ public void testAddSaveSingleContact(){
+	int previousCount = mActivity.getListView().getCount();
+	String message;
+
+	addNewContact(INPUT_NAME_1 + "1", "5435754532", "1" + INPUT_EMAIL_1, CONFIRM_OPTION);
+
+	message = "Added 1 to initial length=" + previousCount + ", but resulted with a count=" +
+		mActivity.getListView().getCount();
+	assertEquals(message, ++previousCount, mActivity.getListView().getCount());
+
+	// Check Content; Name; Num; Starred
+	assertEquals(INPUT_NAME_1 + "1", getTextFromView(0, android.R.id.text1));
+	assertEquals("5435754532", getTextFromView(0, android.R.id.text2));
+
+	//Check email is saved
+	//cursor = returnEmailCursorAtId("1");
+	Uri uri = Uri.parse("content://contacts/people/1");
+	uri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
+	Cursor cursor = mActivity.getContentResolver().query(uri, CONTACTS_COLUMNS, null, null, null);
+	assertTrue("returnEmailCursorAtId: Moving cursor to first row has failed", cursor.first());
+
+	int dataIndex = cursor.getColumnIndexOrThrow("data");
+	assertEquals("1" + INPUT_EMAIL_1, cursor.getString(dataIndex));
+	cursor.deactivate();
+}
+	
+ + +

Troubleshooting

+ +

If you run your test cases and nothing appears to happen, have a look at adb logcat. The following is a common problem:

+
+I/dalvikvm(  688): threadid=11: attached from native, name=Binder Thread #1
+I/dalvikvm(  688): threadid=13: attached from native, name=Binder Thread #2
+W/ActivityManager(  469): Unable to find instrumentation info for: ComponentInfo{com.google.android.browser_instrumentation/com.google.android.browser_instrumentation.BrowserWebkitLayoutInstrumentation}
+D/AndroidRuntime(  688): Shutting down VM
+E/AndroidRuntime(  688): ERROR: thread attach failed
+
+

It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file.

+ diff --git a/pdk/docs/porting/instrumentation_testing.jd b/pdk/docs/porting/instrumentation_testing.jd new file mode 100755 index 000000000..c3765f4de --- /dev/null +++ b/pdk/docs/porting/instrumentation_testing.jd @@ -0,0 +1,494 @@ +page.title=Instrumentation Testing +pdk.version=1.0 +doc.type=porting +@jd:body + + + +

This document describes how to use the Instrumentation Framework to write test cases. Instrumentation testing allows you to verify a particular feature or behavior with an automated JUnit TestCase. You can launch activities and providers within an application, send key events, and make assertions about various UI elements.

+

You should have a working knowledge of the following:

+
    +
  • Android Application Framework
  • +
  • Using adb, am and various logging functionality
  • +
  • A brief understanding of the application of interest, that is, the names of the classes which handle the intents etc.
  • +
  • JUnit testing.
  • +
+

Each Android application runs in its own process. Instrumentation kills the application process and restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs.

+ + +

Instrumentation Framework

+ + + +

Classes

+ +

The following classes help glue together Instrumentation with JUnit testing.

+ + + + + + + + + + + + + + + + +
ClassDescription
InstrumentationTestCase +

This extends the standard JUnit TestCase and offers access to an Instrumentation class. Write tests inside your instrumentation class any way you see fit. For example, your test might launch activities and send key events. For this to work properly, the instrumentation needs to be injected into the test case.

InstrumentationTestRunnerThe instrumentation test runner is an instrumentation that runs instrumentation test cases and injects itself into each test case. Instrumentation test cases need to be grouped together with an instrumentation test runner with the appropriate target package.
InstrumentationTestSuiteThe instrumentation test suite is a simple extension of the standard JUnit TestSuite that keeps a member Instrumentation variable on hand to inject into each TestCase before running them. It is used by InstrumentationTestRunner.
+

Three additional base classes extend InstrumentationTestCase to allow you to test Activity and Provider classes:

+ + + + + + + + + + + + + + + + + + + + + +
ClassDescription
ActivityTestCase

This class can be used to write tests for a specific activity. An activity is launched in its setUp() method and finished with tearDown. If you write a test case that extends ActivityTestCase, you can write tests that access the activity using getActivity() and assume it has been set up properly.

ServiceTestCaseThis test case provides a framework in which you can test Service classes in a controlled environment. It provides basic support for the lifecycle of a Service, and hooks by which you can inject various dependencies and control the environment in which your Service is tested.
SingleLaunchActivityTestCaseThis class is similar to ActivityTestCase except that the activity is launched once per class instead of every time the test case calls setup.
ProviderTestCaseThis class is similar to ActivityTestCase except that it will setup, tear down, and provide access to the Provider of your choice.
+ + +

Understanding the am Command

+ +

The am command is a command-line interface to the ActivityManager (see http://code.google.com/android/reference/android/app/ActivityManager.html for details). am is used to start and instrument activities using the adb shell command, as shown in the snippet below:

+
+> adb shell am
+usage: am [start|instrument]
+       am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
+                [-c <CATEGORY> [-c <CATEGORY>] ...]
+                [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
+                [-n <COMPONENT>] [-D] [<URI>]
+       am instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
+                [-w] <COMPONENT>
+For example, to start the Contacts application you can use
+> adb shell am start -n com.google.android.contacts/.ContactsActivity
+
+ + +

Platform Test Suites

+ +

This section provides an overview for various unit and functional test cases that can be executed through the instrumentation framework.

+ + +

Framework Tests

+ +

Framework test cases test the Android application framework or specific Android application functionality that requires an Android runtime context. These tests can be found in //device/tests and //device/apps/AndroidTests.

+ + +

Core Library

+ +

Core library test cases test the Android library functionality that does not require an Android runtime context. These tests are split into Android library (android.* package space) tests at //device/java/tests and Java library (java.*, javax.*, etc. packages) tests at //device/dalvik/libcore/.../tests.

+ + +

Running Tests

+ +

Each instrumentation test case is similar to an Android application with the distinction that it starts another application. For example, have a look in the tests/Contacts directory.

+
    +
  • There should be a Makefile and an Android Manifest file.
  • +
  • Tests are located in tests/Contacts/src/com/google/android/contactstests.
  • +
  • The Instrumentation Test Runner is located at tests/Contacts/src/com/google/android/contactstests/functional/ContactsInstrumentationTestRunner.java.
  • +
+

Suppose you have a makefile with Contactstests as the target.

+
    +
  • make Contactstests: Compiles the test cases.
  • +
  • adb install Contactstests.apk: Installs the apk on the device.
  • +
  • Use the adb shell am command to run them.
  • +
+

To run your tests, use the am instrument command with your InstrumentationTestRunner as its argument. Results are printed as a result of the instrumentation. For example, the following snippet displays the output after running the framework tests with one test failing (note the unusual syntax caused by how instrumentations are run via am):

+
+$ adb shell am instrument -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner
+INSTRUMENTATION_RESULT: test results:=.......F.......
+Time: 6.837
+There was 1 failure:
+1) testSetUpConditions(com.google.android.frameworktest.tests.focus.RequestFocusTest)junit.framework.AssertionFailedError: requestFocus() should work from onCreate.
+        at com.google.android.frameworktest.tests.focus.RequestFocusTest.testSetUpConditions(RequestFocusTest.java:66)
+        at java.lang.reflect.Method.invokeNative(Native Method)
+        at android.test.InstrumentationTestSuite.runTest(InstrumentationTestSuite.java:73)
+        at android.test.InstrumentationTestSuite.runTest(InstrumentationTestSuite.java:73)
+        at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:151)
+        at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1088)
+
+FAILURES!!!
+Tests run: 14,  Failures: 1,  Errors: 0
+
+<RETURN> to continue
+
+INSTRUMENTATION_CODE: -1
+$ 
+
+ + +

All Tests with Default TestRunner behavior

+ +

If no class or package is passed in to run, InstrumentationTestRunner will automatically find and run all tests under the package of the test application (as defined by the android:targetPackage attribute of the instrumentation defined in its manifest file). +

+
 
+$ adb shell am instrument -w \
+  com.android.samples.tests/android.test.InstrumentationTestRunner
+ 
+INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=..........
+Time: 2.317
+ 
+OK (10 tests)
+ 
+ 
+INSTRUMENTATION_CODE: -1
+
+ + +

Running all Tests Under Single Package

+ +

If you have many tests under one package, use the -e package <packagename> option to run all tests under that package without having to manually create a test suite.

+
 
+$ adb shell am instrument -w \
+  -e package com.android.samples.view \
+  com.android.samples.tests/android.test.InstrumentationTestRunner
+INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=........
+Time: 1.587
+ 
+OK (8 tests)
+
+ + +

Running a Single Test Suite

+ +

If you prefer to explicitly state which tests comprise all of your tests, you can define a test suite and run that directly. By convention, all test packages in your system should have at least one suite called AllTests (see AllTests.java). To run all of the tests using the AllTests suite for the api demos test app:

+ +
 
+$ adb shell am instrument -w \
+  -e class com.android.samples.AllTests \
+  com.android.samples.tests/android.test.InstrumentationTestRunner
+ 
+INSTRUMENTATION_RESULT: Test results for AllTests=..........
+Time: 2.286
+ 
+OK (10 tests)
+ 
+ 
+INSTRUMENTATION_CODE: -1
+
+ + +

A Single Test Case

+ +
 
+$ adb shell am instrument -w \
+  -e class com.android.samples.view.Focus2ActivityTest \
+  com.android.samples.tests/android.test.InstrumentationTestRunner
+ 
+INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=....
+Time: 1.359
+ 
+OK (4 tests)
+ 
+ 
+INSTRUMENTATION_CODE: -1
+
+ + +

A Single Test

+ +
 
+$ adb shell am instrument -w \
+  -e class com.android.samples.view.Focus2ActivityTest#testGoingLeftFromRightButtonGoesToCenter \
+  com.android.samples.tests/android.test.InstrumentationTestRunner
+ 
+INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=.
+Time: 0.51
+ 
+OK (1 test)
+ 
+ 
+INSTRUMENTATION_CODE: -1
+
+ + +

Attaching a debugger to your test

+ +

In order to debug your test code, instruct the controller to stop and wait for the debugger by adding -e debug true to your +command line. This causes the test runner to stop and wait for the debugger just before calling your setUp() method. For example,

+ +
 
+$ adb shell am instrument -w \
+  -e debug true \
+  com.android.samples.tests/android.test.InstrumentationTestRunner
+
+ + +

Writing Tests

+ +

When writing tests, refer to the ApiDemos tests as models (located at //device/samples/ApiDemos). This section provides an overview of the test structure with ApiDemos.

+ + +

Location of Files

+ +

Test packages should use the following structure and include Android.mk, AndroidManifest.xml, AllTests.java, and a src directory that mirrors the src directory of the tested application.

+

Files are located within a tests directory found in the root directory:

+
 
+$ find samples/ApiDemos/tests
+samples/ApiDemos/tests
+samples/ApiDemos/tests/Android.mk
+samples/ApiDemos/tests/AndroidManifest.xml
+samples/ApiDemos/tests/src
+samples/ApiDemos/tests/src/com
+samples/ApiDemos/tests/src/com/google
+samples/ApiDemos/tests/src/com/google/android
+samples/ApiDemos/tests/src/com/google/android/samples
+samples/ApiDemos/tests/src/com/google/android/samples/AllTests.java
+samples/ApiDemos/tests/src/com/google/android/samples/ApiDemosTest.java
+samples/ApiDemos/tests/src/com/google/android/samples/os
+samples/ApiDemos/tests/src/com/google/android/samples/os/MorseCodeConverterTest.java
+samples/ApiDemos/tests/src/com/google/android/samples/view
+samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2ActivityTest.java
+samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2AndroidTest.java
+
+ + +

Contents of makefile

+ +

The contents of the makefile are similar to a normal application with the addition of a LOCAL_INSTRUMENTATION_FOR declaration.

+

 
+# Add appropriate copyright banner here
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+ 
+# We only want this apk build for tests.
+LOCAL_MODULE_TAGS := tests
+ 
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+ 
+# Notice that we don't have to include the src files of ApiDemos because, by
+# running the tests using an instrumentation targeting ApiDemos, we
+# automatically get all of its classes loaded into our environment.
+ 
+LOCAL_PACKAGE_NAME := ApiDemosTests
+ 
+LOCAL_INSTRUMENTATION_FOR := ApiDemos
+ 
+include $(BUILD_PACKAGE)
+
+ + +

Content of Manifest

+ +

Use the following example to create an AndroidManifest.xml file that declares the instrumentation. Specify that the framework supplied Instrumentation TestRunner targest the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with .tests appended.

+
 
+# Add appropriate copyright banner here
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.samples.tests">
+ 
+    <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
+ 
+    <!--
+    This declares that this app uses the instrumentation test runner targeting
+    the package of com.android.samples.  To run the tests use the command:
+    "adb shell am instrument -w com.android.samples.tests/android.test.InstrumentationTestRunner"
+    -->
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+                     android:targetPackage="com.android.samples"
+                     android:label="Tests for Api Demos."/>
+ 
+</manifest>
+
+

 

+

The following snippet will prefix the /android.test.InstrumentationTestRunner when running tests from the command line:

+
 
+$ adb shell am instrument -w \
+  com.android.samples.tests/android.test.InstrumentationTestRunner
+
+ + +

New Instrumentation TestRunner

+ +

Create a class that derives from this class. You must override two abstract methods; one that returns the class loader of the target package, and another that defines all of the tests within the package. For example, the snippet below displays the test runner for the framework tests.

+
+public class FrameworkInstrumentationTestRunner extends InstrumentationTestRunner {
+
+    @Override
+    public TestSuite getAllTests() {
+        InstrumentationTestSuite suite = new InstrumentationTestSuite(this);
+
+        suite.addTestSuite(FocusAfterRemovalTest.class);
+        suite.addTestSuite(RequestFocusTest.class);
+        suite.addTestSuite(RequestRectangleVisibleTest.class);
+        return suite;
+    }
+
+    @Override
+    public ClassLoader getLoader() {
+        return FrameworkInstrumentationTestRunner.class.getClassLoader();
+    }
+}
+
+

Next, in an appropriate AndroidManifest.xml, define the instrumentation for the derived class with the appropriate android:targetPackage set. For example, the snippet below defines the instrumentation runner for the framework tests.

+
+<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
+
+<instrumentation android:name="android.tests.FrameworkInstrumentationTestRunner"
+                 android:targetPackage="com.google.android.frameworktest"
+                 android:label="framework instrumentation test runner" />
+
+ + +

New InstrumentationTestCase

+ +

To create a new test case, write a class that extends InstrumentationTestCase in the same application as your test runner. The following snippet illustrates an example ActivityTestCase that tests an activity named MyActivity.

+
+public class ButtonPressTest extends ActivityTestCase<MyActivity> {
+
+    Button mLeftButton;
+
+    public ButtonPressTest() {
+        super("com.example", MyActivity.class);
+    }
+
+    @Override
+    public void setUp() throws Exception {
+      super.setUp();
+      mLeftButton = (Button) getActivity().findViewById(R.id.leftButton);
+    }
+
+    public void testFocusMovesToRight() throws Exception {
+        assertTrue(mLeftButton.hasFocus());
+        getInstrumentation().sendCharacterSync(KeyEvent.KEYCODE_DPAD_RIGHT);
+
+        Button rightButton = (Button) getActivity().findViewById(R.id.rightButton);
+        assertTrue(rightButton.hasFocus());
+    }
+
+    // could have several more tests...
+}
+
+ + +

Exploring a Test Case

+ +

The test case described in this section adds and tests a new Contact. Note that you can send intents, register intent receivers, etc.

+

Instrumentation.java has helper functions that send key events and strings, for example:

+
    +
  • getInstrumentation(): Returns the handle to the instrumentation
  • +
  • sendCharacterSync: Sends a character.
  • +
  • sendStringSync: Sends a string to an input box.
  • +
  • sendKeyDownUpSync: Sends a specific keyevent.
  • +
  • sendTrackballEventSync: Sends a trackball event.
  • +
+

You can find the test case below at device/tests/Contacts.

+
+private void addNewContact(String name, int star, int phoneType, String number, String label,
+		String email, int emailType){
+	ContentValues values = new ContentValues();
+	Uri phoneUri = null;
+	Uri emailUri = null;
+
+	values.put(Contacts.People.NAME, name);
+	values.put(Contacts.People.STARRED, star);
+
+	//Add Phone Numbers
+	Uri uri = mActivity.getContentResolver().insert(Contacts.People.CONTENT_URI, values);
+	phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);
+
+	values.clear();
+	values.put(Contacts.Phones.TYPE, phoneType);
+	values.put(Contacts.Phones.NUMBER, number);
+	values.put(Contacts.Phones.LABEL, label);
+	mActivity.getContentResolver().insert(phoneUri, values);
+
+	//Add Email
+	emailUri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
+
+	values.clear();
+	values.put(ContactMethods.KIND, Contacts.KIND_EMAIL);
+	values.put(ContactMethods.DATA, email);
+	values.put(ContactMethods.LABEL, "");
+	values.put(ContactMethods.TYPE, emailType);
+	mActivity.getContentResolver().insert(emailUri, values);
+}
+
+
+ public void testAddSaveSingleContact(){
+	int previousCount = mActivity.getListView().getCount();
+	String message;
+
+	addNewContact(INPUT_NAME_1 + "1", "5435754532", "1" + INPUT_EMAIL_1, CONFIRM_OPTION);
+
+	message = "Added 1 to initial length=" + previousCount + ", but resulted with a count=" +
+		mActivity.getListView().getCount();
+	assertEquals(message, ++previousCount, mActivity.getListView().getCount());
+
+	// Check Content; Name; Num; Starred
+	assertEquals(INPUT_NAME_1 + "1", getTextFromView(0, android.R.id.text1));
+	assertEquals("5435754532", getTextFromView(0, android.R.id.text2));
+
+	//Check email is saved
+	//cursor = returnEmailCursorAtId("1");
+	Uri uri = Uri.parse("content://contacts/people/1");
+	uri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
+	Cursor cursor = mActivity.getContentResolver().query(uri, CONTACTS_COLUMNS, null, null, null);
+	assertTrue("returnEmailCursorAtId: Moving cursor to first row has failed", cursor.first());
+
+	int dataIndex = cursor.getColumnIndexOrThrow("data");
+	assertEquals("1" + INPUT_EMAIL_1, cursor.getString(dataIndex));
+	cursor.deactivate();
+}
+	
+ + +

Deciding Kinds of Tests to Write

+ +

Once you are bootstrapped with your test application, you can start writing tests. There are three of types of tests you may wish to write:

+

    +
  • TestCase: The standard junit test case. +
  • +
  • AndroidTestCase: A test case with access to a Context object that is injected for you by the instrumentation test runner. +
  • +
  • InstrumentationTestCase: A test case with access to an Instrumentation, which can be used to launch activities, content providers, send key events, etc. +
  • +
+

+

The API Demos test suite includes examples of all three styles and can be used as a guideline for writing each type of test.

+

There are two utility classes available for the most common uses of InstrumentationTestCase: ActivityTestCase and ProviderTestCase. See their javadoc for more information. +

+ + +

Troubleshooting

+ +

If you run your test cases and nothing appears to happen, have a look at adb logcat. The following is a common problem:

+
+I/dalvikvm(  688): threadid=11: attached from native, name=Binder Thread #1
+I/dalvikvm(  688): threadid=13: attached from native, name=Binder Thread #2
+W/ActivityManager(  469): Unable to find instrumentation info for: ComponentInfo{com.google.android.browser_instrumentation/com.google.android.browser_instrumentation.BrowserWebkitLayoutInstrumentation}
+D/AndroidRuntime(  688): Shutting down VM
+E/AndroidRuntime(  688): ERROR: thread attach failed
+
+

It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file.

diff --git a/pdk/docs/porting/intro_source_code.jd b/pdk/docs/porting/intro_source_code.jd new file mode 100755 index 000000000..2ba413cfa --- /dev/null +++ b/pdk/docs/porting/intro_source_code.jd @@ -0,0 +1,171 @@ +page.title=Source Code Overview +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

Introduction

+ +

Android source code is maintained in two code bases: the Android Linux kernel (kernel directory) and Android platform and applications (device directory). This document provides a high-level introduction to the source code organization and an overview of the major components of each primary directory.

+ +

Android Source

+ + +

Linux Kernel

+ +

The Android Linux kernel includes enhancements to the Linux 2.6 kernel that provide additional drivers to support the Android platform, including:

+
    +
  • Binder: an OpenBinder-based driver to facilitate inter-process communication (IPC) in the Android platform.
  • +
  • Android Power Management: a light weight power management driver built on top of standard Linux power management but optimized for embedded systems.
  • +
  • Low Memory Killer: Based on hints from the userspace, the low memory killer can kill off processes to free up memory as necessary. It is designed to provide more flexibility than the Out Of Memory (OOM) killer in the standard kernel.
  • +
  • Logger: A light weight logging device used to capture system, radio, logdata, etc.
  • +
  • USB Gadget: Uses the USB function framework.
  • +
  • Android/PMEM: The PMEM (physical memory) driver is used to provide contiguous physical memory regions to userspace libraries that interact with the digital signal processor (DSP) and other hardware that cannot cope with scatter-gather.
  • +
  • Android Alarm: A driver which provides timers that can wake the device up from sleep and a monotonic timebase that runs while the device is asleep.
  • +
+

Look for Android-specific enhancements in the following directories:

+

    +
  • /drivers/android
  • +
  • /drivers/misc
  • +
  • /include/linux
  • +
+

+ + +

Android Platform and Applications

+ +

The following list outlines the directory structure found within the device branch of Android source code:

+ + +

+ +

    + + +
  • apps +Core Android applications such as Phone, Camera, and Calendar. +
  • + + +
  • boot +Reference Android bootloader and other boot-related source code. +
  • + + +
  • commands +Common Android commands, the most important of which is the runtime command, which does much of the initialization of the system. +
  • + + +
  • config +System-wide makefiles and linker scripts. +
  • + + +
  • content +Standard Android ContentProvider modules. +
  • + + +
  • dalvik +Android runtime Virtual Machine (VM). +
  • + + +
  • data +Fonts, keymaps, sounds, timezone information, etc. +
  • + + +
  • docs +Full set of Android documentation. +
  • + + +
  • extlibs +Non-Android libraries. This directory is intended to host unmodified external code. None of the libraries included within this directory rely on Android headers or libraries. +
  • + + +
  • ide +Tools for support of the IDE's used to write Android applications. +
  • + + +
  • include +Android system headers for inclusion. +
  • + + +
  • java +Android core APIs, as well as some external libraries. +
  • + + +
  • libs +Android-specific C++ based libraries. +
  • + + +
  • partner +Project-specific source code for various proprietary components. +
  • + + +
  • prebuilt +Prebuilt tools, like the toolchains and emulator binary. +
  • + + +
  • product +Device-specific configuration files. This directory will include a subdirectory for each new device. +
  • + + +
  • samples +Sample applications. +
  • + + +
  • servers +C++ based system servers. +
  • + + +
  • system +Core of the embedded Linux platform at the heart of Android. These essential bits are required for basic booting, operation, and debugging. +
  • + + +
  • tests +Platform and application test cases. +
  • + + +
  • tools +Tools for building and debugging Android (of particular interest for porting are "adb" and "emulator"). +
  • + + + +

    + +

+ + +

Adding Source Code

+ +

You can develop Android applications with the same standard tools you use to develop any Java application. The Android core libraries provide the functionality needed to build rich mobile applications and the Android development tools are designed to simplify running, debugging, and testing your applications.

+ +

Add project-specific source code to the Android source tree under the partner directory in a directory specific to the application or service you are building. For example, all Google-specific applications would be placed under vendor/google/. A Google search application would be placed under vendor/google/apps/Search. +

See Building Android for a new Mobile Device for detailed instructions.

+ + diff --git a/pdk/docs/porting/keymaps_keyboard_input.jd b/pdk/docs/porting/keymaps_keyboard_input.jd new file mode 100755 index 000000000..f71201550 --- /dev/null +++ b/pdk/docs/porting/keymaps_keyboard_input.jd @@ -0,0 +1,504 @@ +page.title=Keymaps and Keyboard Input +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

This document describes how keyboard input gets translated into Android actions and how you can customize key layout and key character maps to match the needs of your own device.

+

Android uses the standard Linux input event device (/dev/event0) and driver as described in the linux/input.h kernel header file. For more information regarding standard Linux input drivers, please see Linux Input drivers at http://kernel.org.

+ + + + +

Functionality

+ +

Android's input event device is structured around an interrupt or polling routine that captures the device-specific scancode and converts it to a standard form acceptable to Linux (as defined in input.h) before passing it to the kernel with input_event().

+

The keymap driver's other primary function is to establish a probe function that sets up the interrupt or polling function, handles hardware initialization, and attaches the driver to the input subsystem with input_register_device().

+

The table below describes the steps required to translate from keyboard input to application action:

+ + + + + + + + + + + + + + + + + + + + + + +
StepActionExplanation
1.Window manager reads key event from Linux keyboard driver. Events are typically positional. For example, the top-left position on a keypad returns 16 regardless of whether that key is printed with a Q (as on a QWERTY keypad) or an A (as on an AZERTY keypads). This first conversion by the Linux Keyboard Driver yields a scancode (for example, 16).
2. Window manager maps scancode to keycode.When the window manager reads a key event out of the driver, it maps the scancode to a keycode using a key layout map file. Typically, the keycode is the primary symbol screen-printed on a key. For example, KEYCODE_DPAD_CENTER is the center button on the five-way navigation control. Even though ALT + G generates a "?" character, KEYCODE_G is the keycode.
3. Window manager sends both the scancode and the keycode to the application.Both the scancode and keycode are handled by the view with focus. + How the application interprets both depend on the application.
+ + +

Key Layout Map

+ + + +

Selection of a Key Layout Map

+ +

Key layout maps are installed in /system/usr/keylayout and /data/usr/keylayout.

+

For each keyboard device xxx, set the android.keylayout.xxx system property (see Building New Device for help setting system properties). If you don't specify a keylayout file, Android will default to /system/usr/keylayout/qwerty.kl.

+ + +

File Format

+ +

Key layout maps are stored on the device as UTF-8 text files and have the following characteristics:

+

    +
  • Comments: The pound symbol (#) denotes a comment and everything after the pound symbol on a line is ignored.
  • +
  • Whitespace: All empty lines are ignored.
  • +
  • Key definitions: Key definitions follow the syntax key SCANCODE KEYCODE [FLAGS...], where SCANCODE is a number, KEYCODE is defined in your specific keylayout file (android.keylayout.xxx), and potential FLAGS are defined as follows: +
    • SHIFT: While pressed, the shift key modifier is set
    • +
    • ALT: While pressed, the alt key modifier is set
    • +
    • CAPS: While pressed, the caps lock key modifier is set
    • +
    • WAKE: When this key is pressed while the device is asleep, the device will wake up and the key event gets sent to the app.
    • +
    • WAKE_DROPPED: When this key is pressed while the device is asleep, the device will wake up and the key event does not get sent to the app.
    • +
    +
  • +
+

+ + +

Example of a Key Layout Map File

+ +

The following code comes from android/src/device/product/generic/tuttle2.kl and is an example of a complete key layout file:

+
+# Copyright 2007 Google Inc.
+
+key 2     1
+key 3     2
+key 4     3
+key 5     4
+key 6     5
+key 7     6
+key 8     7
+key 9     8
+key 10    9
+key 11    0
+key 158   BACK              WAKE_DROPPED
+key 230   SOFT_RIGHT        WAKE
+key 60    SOFT_RIGHT        WAKE
+key 107   ENDCALL           WAKE_DROPPED
+key 62    ENDCALL           WAKE_DROPPED
+key 229   MENU         WAKE_DROPPED
+key 59    MENU         WAKE_DROPPED
+key 228   POUND
+key 227   STAR
+key 231   CALL              WAKE_DROPPED
+key 61    CALL              WAKE_DROPPED
+key 232   DPAD_CENTER       WAKE_DROPPED
+key 108   DPAD_DOWN         WAKE_DROPPED
+key 103   DPAD_UP           WAKE_DROPPED
+key 102   HOME              WAKE
+key 105   DPAD_LEFT         WAKE_DROPPED
+key 106   DPAD_RIGHT        WAKE_DROPPED
+key 115   VOLUME_UP
+key 114   VOLUME_DOWN
+key 116   POWER             WAKE
+key 212   SLASH
+
+key 16    Q
+key 17    W
+key 18    E
+key 19    R
+key 20    T
+key 21    Y
+key 22    U
+key 23    I
+key 24    O
+key 25    P
+
+key 30    A
+key 31    S
+key 32    D
+key 33    F
+key 34    G
+key 35    H
+key 36    J
+key 37    K
+key 38    L
+key 14    DEL
+        
+key 44    Z
+key 45    X
+key 46    C
+key 47    V
+key 48    B
+key 49    N
+key 50    M
+key 51    COMMA
+key 52    PERIOD
+key 28    NEWLINE
+        
+key 56    ALT_LEFT
+key 42    SHIFT_LEFT
+key 215   AT
+key 57    SPACE
+key 53    SLASH
+key 127   SYM
+key 100   ALT_LEFT
+
+key 399   GRAVE
+
+ + +

Key Character Map

+ + + +

Selection of a Key Character Map

+ +

Key character maps are installed in /system/usr/keychars and /data/usr/keychars.

+

For each keyboard device xxx, set the android.keychar.xxx system property to the full path of the desired keychar file. If you don't specify a keychar file, Android will default to /system/usr/keychar/qwerty.kl. + + +

File Format

+ +

Key character maps are stored on the device as binary resources in order to reduce loading time. Key character maps have the following characteristics:

+

    + +
  • Comments: The pound symbol (#) denotes a comment and everything after the pound symbol on a line is ignored.
  • +
  • Whitespace: All empty lines are ignored.
  • +
  • Column definitions: Column definitions follow the syntax columns MODIFIERS [...], where MODIFIERS are defined as follows: + + + + + + + + + + + + + + + + + + + + + + + + + +
    Character in MODIFIERSCorresponding bit in the modifiers
    Ono modifiers
    SMODIFIER_SHIFT
    CMODIFIER_CONTROL
    LMODIFIER_CAPS_LOCK
    AMODIFIER_ALT
    +
  • +
  • Key definitions: Key definitions have the syntax key SCANCODE CHARACTER [...] where SCANCODE is a number and CHARACTER values are either UTF-8 characters in quotation marks (for example, "a") or a numeric value that strtol can parse.
  • +

+ + +

Example of a Key Character Map File

+ +

The following code comes from android/src/device/product/generic/tuttle2.kcm and represents a complete key character file:

+

The type line indicates what kind of keyboard your device implements. Possible types include:

+

    +
  • NUMERIC: A numeric (12-key) keyboard.
  • +
  • Q14: A keyboard that includes all letters but multiple letters per key.
  • +
  • QWERTY: A keyboard with all letters and possibly numbers. This option applies to all full keyboard configurations, such as AZERTY.
  • +
+

+
+# Copyright 2007 Google Inc.
+
+[type=QWERTY]
+
+# keycode   base    caps    fn      caps_fn number  display_label
+
+A           'a'     'A'     '%'     0x00    '%'     'A'
+B           'b'     'B'     '='     0x00    '='     'B'
+C           'c'     'C'     '8'     0x00E7  '8'     'C'
+D           'd'     'D'     '5'     0x00    '5'     'D'
+E           'e'     'E'     '2'     0x0301  '2'     'E'
+F           'f'     'F'     '6'     0x00A5  '6'     'F'
+G           'g'     'G'     '-'     '_'     '-'     'G'
+H           'h'     'H'     '['     '{'     '['     'H'
+I           'i'     'I'     '$'     0x0302  '$'     'I'
+J           'j'     'J'     ']'     '}'     ']'     'J'
+K           'k'     'K'     '"'     '~'     '"'     'K'
+L           'l'     'L'     '''     '`'     '''     'L'
+M           'm'     'M'     '>'     0x00    '>'     'M'
+N           'n'     'N'     '<'     0x0303  '<'     'N'
+O           'o'     'O'     '('     0x00    '('     'O'
+P           'p'     'P'     ')'     0x00    ')'     'P'
+Q           'q'     'Q'     '*'     0x0300  '*'     'Q'
+R           'r'     'R'     '3'     0x20AC  '3'     'R'
+S           's'     'S'     '4'     0x00DF  '4'     'S'
+T           't'     'T'     '+'     0x00A3  '+'     'T'
+U           'u'     'U'     '&'     0x0308  '&'     'U'
+V           'v'     'V'     '9'     '^'     '9'     'V'
+W           'w'     'W'     '1'     0x00    '1'     'W'
+X           'x'     'X'     '7'     0xEF00  '7'     'X'
+Y           'y'     'Y'     '!'     0x00A1  '!'     'Y'
+Z           'z'     'Z'     '#'     0x00    '#'     'Z'
+
+COMMA       ','     ';'     ';'     '|'     ','     ','
+PERIOD      '.'     ':'     ':'     0x2026  '.'     '.'
+AT          '@'     '0'     '0'     0x2022  '0'     '@'
+SLASH       '/'     '?'     '?'     '\'     '/'     '/'
+
+SPACE       0x20    0x20    0x9     0x9     0x20    0x20
+NEWLINE     0xa     0xa     0xa     0xa     0xa     0xa
+
+# on pc keyboards
+TAB         0x9     0x9     0x9     0x9     0x9     0x9
+0           '0'     ')'     ')'     ')'     '0'     '0'
+1           '1'     '!'     '!'     '!'     '1'     '1'
+2           '2'     '@'     '@'     '@'     '2'     '2'
+3           '3'     '#'     '#'     '#'     '3'     '3'
+4           '4'     '$'     '$'     '$'     '4'     '4'
+5           '5'     '%'     '%'     '%'     '5'     '5'
+6           '6'     '^'     '^'     '^'     '6'     '6'
+7           '7'     '&'     '&'     '&'     '7'     '7'
+8           '8'     '*'     '*'     '*'     '8'     '8'
+9           '9'     '('     '('     '('     '9'     '9'
+
+GRAVE         '`'     '~'     '`'     '~'     '`'     '`'
+MINUS         '-'     '_'     '-'     '_'     '-'     '-'
+EQUALS        '='     '+'     '='     '+'     '='     '='
+LEFT_BRACKET  '['     '{'     '['     '{'     '['     '['
+RIGHT_BRACKET ']'     '}'     ']'     '}'     ']'     ']'
+BACKSLASH     '\'     '|'     '\'     '|'     '\'     '\'
+SEMICOLON     ';'     ':'     ';'     ':'     ';'     ';'
+APOSTROPHE    '''     '"'     '''     '"'     '''     '''
+STAR          '*'     '*'     '*'     '*'     '*'     '*'
+POUND         '#'     '#'     '#'     '#'     '#'     '#'
+PLUS          '+'     '+'     '+'     '+'     '+'     '+'
+
+ + +

Resource Binary File Format

+ +

The file snippet above gets converted to the following by the makekcharmap tool as part of the build process. You can mmap this file in and share the approximately 4k of memory that it uses between processes to minimize load time.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OffsetSize (bytes)Description
0x00-0x0bThe ascii value "keycharmap1" including the null character
0x0c-0x0fpadding
0x10-0x13The number of entries in the modifiers table (COLS)
0x14-0x17The number of entries in the characters table (ROWS)
0x18-0x1fpadding
4*COLSModifiers table. The modifier mask values that each of the + columns in the characters table correspond to.
padding to the next 16 byte boundary
4*COLS*ROWSCharacters table. The modifier mask values that each of the + columns correspond to.
+ + +

Implementing Your Own Driver (Driver Template)

+ +

The following file, pguide_events.c, illustrates how to implement an Android keymap driver.

+
+/*
+ * pguide_events.c
+ *
+ * ANDROID PORTING GUIDE: INPUT EVENTS DRIVER TEMPLATE
+ *
+ * This template is designed to an example of the functionality
+ * necessary for Android to recieve input events.  The PGUIDE_EVENT
+ * macros are meant as pointers indicating where to implement the
+ * hardware specific code necessary for the new device.  The existence
+ * of the macros is not meant to trivialize the work required, just as
+ * an indication of where the work needs to be done.
+ * 
+ * Copyright 2007, Google Inc.
+ * Based on goldfish-events.c
+ *
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+
+#include 
+#include 
+
+
+
+#define PGUIDE_EVENTS_INTERRUPT do{} while(0)
+#define PGUIDE_EVENTS_PROBE do{} while(0)
+
+struct event_dev {
+    struct input_dev *input;
+    int irq;
+};
+
+static irqreturn_t pguide_events_interrupt(int irq, void *dev_id)
+{
+    struct event_dev *edev = dev_id;
+    unsigned type=0, code=0, value=0;
+
+    /* Set up type, code, and value per input.h
+     */
+    PGUIDE_EVENTS_INTERRUPT;
+
+    input_event(edev->input, type, code, value);
+    return IRQ_HANDLED;
+}
+
+static int pguide_events_probe(struct platform_device *pdev)
+{
+    struct input_dev *input_dev;
+    struct event_dev *edev;
+    
+    printk("*** pguide events probe ***\n");
+
+    edev = kzalloc(sizeof(struct event_dev), GFP_KERNEL);
+    input_dev = input_allocate_device();
+
+    /* Setup edev->irq and do any hardware init */
+    PGUIDE_EVENTS_PROBE;
+
+    if(request_irq(edev->irq, pguide_events_interrupt, 0,
+                   "pguide_events", edev) < 0) {
+        goto fail;
+    }
+    
+        /* indicate that we generate key events */
+    set_bit(EV_KEY, input_dev->evbit);
+    set_bit(EV_REL, input_dev->evbit);
+    set_bit(EV_ABS, input_dev->evbit);
+
+    /* indicate that we generate *any* key event */
+
+    bitmap_fill(input_dev->keybit, KEY_MAX);
+    bitmap_fill(input_dev->relbit, REL_MAX);
+    bitmap_fill(input_dev->absbit, ABS_MAX);
+    
+    platform_set_drvdata(pdev, edev);
+
+    input_dev->name = "pguide_events";
+    input_dev->private = edev;
+    input_dev->cdev.dev = &pdev->dev;
+    
+    input_register_device(input_dev);
+    return 0;
+
+fail:
+    kfree(edev);
+    input_free_device(input_dev);
+    
+    return -EINVAL;
+}
+
+static struct platform_driver pguide_events_driver = {
+    .probe = pguide_events_probe,
+    .driver = {
+        .name = "pguide_events",
+    },
+};
+
+static int __devinit pguide_events_init(void)
+{
+    return platform_driver_register(&pguide_events_driver);
+}
+
+
+static void __exit pguide_events_exit(void)
+{
+}
+
+module_init(pguide_events_init);
+module_exit(pguide_events_exit);
+
+MODULE_DESCRIPTION("Pguide Event Device");
+MODULE_LICENSE("GPL");
+
+ + +

Sample Implementation

+ +

Assume the following for the setup of a new keypad device:

+
+android.keylayout.partnerxx_keypad = /system/usr/keylayout/partnerxx_keypad.kl
+android.keychar.partnerxx_keypad = /system/usr/keychars/partnerxx.kcm
+
+

The following example log file indicates that you have correctly registered the new keypad:

+
+I/EventHub( 1548): New device: path=/dev/input/event0 name=partnerxx_keypad id=0x10000 (of 0x1) index=1 fd=30
+I/EventHub( 1548): new keyboard input device added, name = partnerxx_keypad
+D/WindowManager( 1548): Starting input thread.
+D/WindowManager( 1548): Startup complete!
+I/EventHub( 1548): New keyboard: name=partnerxx_keypad 
+  keymap=partnerxx_keypad.kl 
+  keymapPath=/system/usr/keychars/partnerxx_keypad.kcm.bin
+I/ServiceManager( 1535): ServiceManager: addService(window, 0x13610)
+I/EventHub( 1548): Reporting device opened: id=0x10000, name=/dev/input/event0
+I/KeyInputQueue( 1548): Device added: id=0x10000, name=partnerxx_keypad, classes=1
+I/KeyInputQueue( 1548):   Keymap: partnerxx_keypad.kl
+
+

The snippet above contains artificial line breaks to maintain a print-friendly document.

diff --git a/pdk/docs/porting/lights.jd b/pdk/docs/porting/lights.jd new file mode 100755 index 000000000..6bbfb89ca --- /dev/null +++ b/pdk/docs/porting/lights.jd @@ -0,0 +1,48 @@ +page.title=Lights +pdk.version=1.0 +doc.type=porting +@jd:body + +
+
+

In this document

+ + +
+
+ +

Android defines a user space C abstraction interface for LED hardware. The interface header is defined in +hardware/libhardware/include/hardware/lights.h. +In order to integrate LEDs with Android you need to build a shared library that implements this interface. + +The types of logical lights currently supported by Android include: +

    +
  • Backlight
  • +
  • Keyboard
  • +
  • Buttons
  • +
  • Battery
  • +
  • Notifications
  • +
  • Attention
  • +
+

+ +

Building a Lights Library

+

To implement a Lights driver, create a shared library that implements the interface defined in lights.h. You must name your shared library +liblights.so so that it will get loaded from /system/lib at runtime. +

Interface

+ + + +

+ +

Note: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, click here.

+ + + diff --git a/pdk/docs/porting/modules.html b/pdk/docs/porting/modules.html new file mode 100755 index 000000000..ea2a07a3b --- /dev/null +++ b/pdk/docs/porting/modules.html @@ -0,0 +1,37 @@ + + + + +Doxygen-Generated Content + + + + + + +
+

Modules

Here is a list of all modules: +
+ + diff --git a/pdk/docs/porting/porting_toc.cs b/pdk/docs/porting/porting_toc.cs new file mode 100644 index 000000000..02b18e341 --- /dev/null +++ b/pdk/docs/porting/porting_toc.cs @@ -0,0 +1,92 @@ + + + + + diff --git a/pdk/docs/porting/power_management.jd b/pdk/docs/porting/power_management.jd new file mode 100755 index 000000000..542459da8 --- /dev/null +++ b/pdk/docs/porting/power_management.jd @@ -0,0 +1,203 @@ +page.title=Power Management +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

Introduction

+ +

Android supports its own Power Management (on top of the standard Linux Power Management) designed with the premise that the CPU shouldn't consume power if no applications or services require power. For more information regarding standard Linux power management, please see Linux Power Management Support at http://kernel.org.

+

Android requires that applications and services request CPU resources with "wake locks" through the Android application framework and native Linux libraries. If there are no active wake locks, Android will shut down the CPU.

+

The image below illustrates the Android power management architecture.

+

+ +Solid elements represent Android blocks and dashed elements represent partner-specific blocks. + + + +

Wake Locks

+ +

Wake locks are used by applications and services to request CPU resources.

+ +

A locked wakelock, depending on its type, prevents the system from entering suspend or other low-power states. This document describes how to employ wakelocks.

+

There are two settings for a wakelock:

+
    +
  • WAKE_LOCK_SUSPEND: prevents a full system suspend.
  • +
  • WAKE_LOCK_IDLE: low-power states, which often cause large interrupt latencies or that disable a set of interrupts, will not be entered from idle until the wakelocks are released.
  • +
+

Unless the type is specified, this document refers to wakelocks of type WAKE_LOCK_SUSPEND.

+

If the suspend operation has already started when locking a wakelock, the system will abort the suspend operation as long it has not already reached the suspend_late stage. This means that locking a wakelock from an interrupt handler or a freezeable thread always works, but if you lock a wakelock from a suspend_late handler, you must also return an error from that handler to abort suspend. You can use wakelocks to allow the user-space to decide which keys should wake the full system and turn on the screen. Use set_irq_wake or a platform-specific API to ensure that the keypad interrupt wakes up the CPU. Once the keypad driver has resumed, the sequence of events can look like this:

+
    +
  1. The Keypad driver receives an interrupt, locks the keypad-scan wakelock, + and starts scanning the keypad matrix.
  2. +
  3. The keypad-scan code detects a key change and reports it to the input-event + driver.
  4. +
  5. The input-event driver sees the key change, enqueues an event, and locks + the input-event-queue wakelock.
  6. +
  7. The keypad-scan code detects that no keys are held and unlocks the + keypad-scan wakelock.
  8. +
  9. The user-space input-event thread returns from select/poll, locks the + process-input-events wakelock, and calls read in the input-event device.
  10. +
  11. The input-event driver dequeues the key-event and, since the queue is now + empty, unlocks the input-event-queue wakelock.
  12. +
  13. The user-space input-event thread returns from read. It determines that the + key should not wake up the full system, releases the process-input-events + wakelock, and calls select or poll.
  14. +
+

The simple sequence diagram below illustrates these steps:

+
+     					Key pressed      Key released
+      					     |		      |
+      keypad-scan       		     ++++++++++++++++++++++
+      input-event-queue 			  +++ 		  +++
+      process-input-events 		            +++ 	    +++
+      
+ +

Driver API

+

A driver can use the wakelock API by adding a wakelock variable to its state and calling wake_lock_init, as illustrated in the snippet below:

+
+  struct state {
+  struct wakelock wakelock;
+  }
+  init() {
+  wake_lock_init(&state->wakelock, WAKE_LOCK_SUSPEND, "wakelockname");
+  }
+  Before freeing the memory, wake_lock_destroy must be called:
+  uninit() {
+  wake_lock_destroy(&state->wakelock);
+  }
+  
+

When the driver determines that it needs to run (usually in an interrupt handler), it calls wake_lock:

+
+  wake_lock(&state->wakelock);
+  
+

When it no longer needs to run, it calls wake_unlock:

+
+  wake_unlock(&state->wakelock);
+  
+

It can also call wake_lock_timeout to release the wakelock after a delay:

+
+  wake_lock_timeout(&state->wakelock, HZ);
+
+

This works whether or not the wakelock is already held. It is useful if the driver woke up other parts of the system that do not use wakelocks but still need to run. Avoid this when possible, since it will waste power if the timeout is long or may fail to finish needed work if the timeout is short.

+

User-space API

+

Write lockname or lockname timeout to /sys/power/wake_lock lock and, if needed, create a wakelock. The timeout here is specified in nanoseconds. Write lockname to /sys/power/wake_unlock to unlock a user wakelock.

+

Do not use randomly generated wakelock names as there is no API to free a user-space wakelock.

+ +

Types of Wake Locks

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Wake Lock Description
ACQUIRE_CAUSES_WAKEUP
Normally wake locks don't actually wake the device, they just cause it to remain on once it's already on. Think of the video player app as the normal behavior. Notifications that pop up and want the device to be on are the exception; use this flag to be like them.
FULL_WAKE_LOCKWake lock that ensures that the screen and keyboard are on at full brightness.
ON_AFTER_RELEASEWhen this wake lock is released, poke the user activity timer so the screen stays on for a little longer.
PARTIAL_WAKE_LOCKWake lock that ensures that the CPU is running. The screen might not be on.
SCREEN_BRIGHT_WAKE_LOCKWake lock that ensures that the screen is on at full brightness; the keyboard backlight will be allowed to go off.
SCREEN_DIM_WAKE_LOCKWake lock that ensures that the screen is on, but the keyboard backlight will be allowed to go off, and the screen backlight will be allowed to go dim.
+ + +

Exploring a Wake Lock Example

+ +

All power management calls follow the same basic format:

+

  1. Acquire handle to the PowerManager service.
  2. +
  3. Create a wake lock and specify the power management flags for screen, timeout, etc.
  4. +
  5. Acquire wake lock.
  6. +
  7. Perform operation (play MP3, open HTML page, etc.).
  8. +
  9. Release wake lock.
  10. +
+

+

The snippet below illustrates this process.

+
+PowerManager pm = (PowerManager)mContext.getSystemService(
+                                          Context.POWER_SERVICE);
+PowerManager.WakeLock wl = pm.newWakeLock(
+                                      PowerManager.SCREEN_DIM_WAKE_LOCK
+                                      | PowerManager.ON_AFTER_RELEASE,
+                                      TAG);
+wl.acquire();
+ // ...
+wl.release();
+
+ + +

PowerManager class

+ +

The Android Framework exposes power management to services and applications through the PowerManager class.

+

User space native libraries (any hardware function in //device/lib/hardware/ meant to serve as supporting libraries for Android runtime) should never call into Android Power Management directly (see the image above). Bypassing the power management policy in the Android runtime will destabilize the system.

+

All calls into Power Management should go through the Android runtime PowerManager APIs.

+

Please visit +http://code.google.com/android/reference/android/os/PowerManager.html for a description of the API and examples.

+ + +

Registering Drivers with the PM Driver

+ +

You can register Kernel-level drivers with the Android Power Manager driver so that they're notified immediately before power down or after power up. For example, you might set a display driver to completely power down when a request comes in to power down from the user space (see the Android MSM MDDI display driver for a sample implementation).

+

To register drivers with the Android PM driver, implement call-back handlers and register them with the Android PM, as illustrated in the snippet below:

+
+android_register_early_suspend(android_early_suspend_t *handler)
+android_register_early_resume(android_early_resume_t *handler)
+
+

It is critical in a drive to return immediately and not wait for anything to happen in the call back.

+ + +

Early Suspend

+ +

The early-suspend API allows drivers to get notified when user-space writes to /sys/power/request_state to indicate that the user visible sleep state should change. Suspend handlers are called in order of low to high (4 - 1 below) and resume handlers are called in order of high to low (1 - 4 below).

+
    +
  1. EARLY_SUSPEND_LEVEL_BLANK_SCREEN:
  2. +
      +
    • on suspend: the screen should be turned off but the framebuffer must still be accessible.
    • +
    • on resume: the screen can be turned back on.
    • +
    +
  3. EARLY_SUSPEND_LEVEL_STOP_DRAWING: +
      +
    • on suspend: this level notifies user-space that it should stop accessing the framebuffer and it waits for it to complete.
    • +
    • on resume: it notifies user-space that it should resume screen access. Two methods are provided, console switch or a sysfs interface.
    • +
    +
  4. +
  5. EARLY_SUSPEND_LEVEL_DISABLE_FB: Turn off the framebuffer +
      +
    • on suspend: turn off the framebuffer
    • +
    • on resume: turn the framebuffer back on.
    • +
    +
  6. +
  7. EARLY_SUSPEND_LEVEL_STOP_INPUT: +
      +
    • on suspend: turn off input devices that are not capable of wakeup or where wakeup is disabled.
    • +
    • on resume: turn the same devices back on.
    • +
    +
  8. +
diff --git a/pdk/docs/porting/release_keys.jd b/pdk/docs/porting/release_keys.jd new file mode 100755 index 000000000..116cdbb83 --- /dev/null +++ b/pdk/docs/porting/release_keys.jd @@ -0,0 +1,82 @@ +page.title=Creating Release Keys and Signing Builds +pdk.version=1.0 +doc.type=porting +@jd:body + + + +

Introduction

+

Android requires that each application be signed with the developer's digital keys to enforce signature permissions and application request to use shared user ID or target process. For more information on the general Android security principles and signing requirements, see the Android Security and Permissions section in the Android Developer Guide). The core Android platform uses four keys to maintain security of core platform components:

+
    +
  • platform: a key for packages that are part of the core platform.
  • +
  • shared: a key for things that are shared in the home/contacts process.
  • +
  • media: a key for packages that are part of the media/download system.
  • +
  • releasekey: the default key to sign with if not otherwise specified
  • +
+

These keys are used to sign applications separately for release images and are not used by the Android build system. The build system signs packages with the testkeys provided in build/target/product/security/. Because the testkeys are part of the standard Android open source distribution, they should never be used for production devices. Instead, device manufacturers should generate their own private keys for shipping release builds.

+ +

Generating keys

+

A device manufacturer's keys for each product should be stored under vendor/<vendor_name>/security/<product_name>, where <vendor_name> and <product_name> represent the manufacturer and product names. To simplify key creation, copy the script below to this directory in a file called mkkey.sh. To customize your keys, change the line that starts with AUTH to reflect the correct information for your company:

+
+#!/bin/sh
+AUTH='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
+if [ "$1" == "" ]; then
+        echo "Create a test certificate key."
+        echo "Usage: $0 NAME"
+        echo "Will generate NAME.pk8 and NAME.x509.pem"
+        echo "  $AUTH"
+        exit
+fi
+
+openssl genrsa -3 -out $1.pem 2048
+
+openssl req -new -x509 -key $1.pem -out $1.x509.pem -days 10000 \
+    -subj "$AUTH"
+
+echo "Please enter the password for this key:"
+openssl pkcs8 -in $1.pem -topk8 -outform DER -out $1.pk8 -passout stdin
+
+

mkkey.sh is a helper script to generate the platform's keys. NOTE: the password you type will be visible in your terminal window. Note the passwords you use as you will need them to sign release builds.

+

To generate the required 4 platform keys, run mkkey.sh four times specifying the key name and password for each:

+
+sh mkkey.sh platform # enter password
+sh mkkey.sh media # enter password
+sh mkkey.sh shared # enter password
+sh mkkey.sh release # enter password
+
+

You should now have new keys for your product.

+ +

Signing a build for release

+

Signing a build for a release is a two-step process.

+
    +
  1. Sign all the individual parts of the build.
  2. +
  3. Put the parts back together into image files.
  4. +
+

Signing applications

+

Use build/tools/releasetools/sign_target_files_apks to sign a target_files package. The target_files package isn't built by default, you need to make sure to specify the "dist" target when you call make. For example:

+
+make -j4 PRODUCT-<product_name>-user dist
+
+

The command above creates a a file under out/dist called <product_name>-target_files.zip. This is the file you need to pass to the sign_target_files_apks script.

+

You would typically run the script like this:

+
+./build/tools/releasetools/sign_target_files_apks -d vendor/<vendor_name>/security/<product_name> <product_name>-target_files.zip signed-target-files.zip
+
+

If you have prebuilt and pre-signed apk's in your build that you don't want re-signed, you must explicitly ignore them by adding -e Foo.apk= to the command line for each apk you wish to ignore.

+

sign_target_files_apks also has many other options that could be useful for signing release builds. Run it with -h as the only option to see the full help.

+

Creating image files

+

Once you have signed-target-files.zip, create the images so you can put it onto a device with the command below:

+
+build/tools/releasetools/img_from_target_files signed-target-files.zip signed-img.zip
+
+

signed-img.zip contains all the .img files. You can use fastboot update signed-img.zip to use fastboot to get them on the device.

diff --git a/pdk/docs/porting/sensors.jd b/pdk/docs/porting/sensors.jd new file mode 100755 index 000000000..1b2402693 --- /dev/null +++ b/pdk/docs/porting/sensors.jd @@ -0,0 +1,67 @@ +page.title=Sensors +pdk.version=1.0 +doc.type=porting +@jd:body + +
+
+

In this document

+ + +
+
+ +

Android defines a user space C abstraction interface for sensor hardware. The interface header is defined in +hardware/libhardware/include/hardware/sensors.h. +In order to integrate sensors with Android you need to build a shared library that implements this interface. + +The types of sensors currently supported by Android include: +

    +
  • Accelerometer
  • +
  • Magnetic Field
  • +
  • Orientation
  • +
  • Gyroscope
  • +
  • Light
  • +
  • Pressure
  • +
  • Temperature
  • +
  • Proximity
  • +
+

+ +

Building a Sensor Library

+

To implement a Sensors driver, create a shared library that implements the interface defined in sensors.h. You must name your shared library +libsensors.so so that it will get loaded from /system/lib at runtime. +

+ +

The following stub file, Android.mk, ensures that libsensors compiles and links to the appropriate libraries:

+ +
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := sensors
+
+LOCAL_PRELINK_MODULE := false
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
+
+LOCAL_SHARED_LIBRARIES := liblog
+# include any shared library dependencies
+
+LOCAL_SRC_FILES := sensors.c
+
+include $(BUILD_SHARED_LIBRARY)
+
+ +

Interface

+ + +

+ +

Note: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, click here.

+ + + diff --git a/pdk/docs/porting/source_setup_guide.jd b/pdk/docs/porting/source_setup_guide.jd new file mode 100755 index 000000000..77e1d6059 --- /dev/null +++ b/pdk/docs/porting/source_setup_guide.jd @@ -0,0 +1,118 @@ +page.title=Host System Setup +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

Introduction

+ +

This section provides instructions on how to configure your host system to build Android for mobile devices. While Android is designed as host-environment agnostic, it has been tested and is known to work on the following Linux operating system; Ubuntu 6.06 (Dapper), 7.10 (Gutsy), and 8.04. Cygwin is not recommended.

+ + +

Installing Packages

+ + + +

Required Packages

+ +

Android requires the following system packages:

+

    +
  • flex: This lexical analyzer generator is used to read a given input file for a description of a scanner to generate.
  • +
  • bison: This is a general-purpose parser generator.
  • +
  • gperf: This is a perfect hash function generator.
  • +
  • libesd0-dev: This enlightened sound daemon (dev files) is used to mix digitized audio streams for playback by a single device.
  • +
  • libwxgtk2.6-dev: This package provides GUI components and other facilities for many different platforms.
  • +
  • build-essential: This package contains a list of packages considered fundamental to building Debian packages.
  • +

+ + +

Ubuntu 6.06 (Dapper)

+ +

On a clean Dapper system, type the following:

+
+% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev zlib1g-dev 
+   build-essential
+
+

This snippet includes an artificial line break to maintain a print-friendly document.

+ + +

Ubuntu 7.10

+ +
  1. The libwxgtk2.6-dev package will only work if the following code is included in your /etc/apt/source file. +

    +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    +## team, and may not be under a free license. Please satisfy yourself as to
    +## your rights to use the software. Also, please note that software in
    +## universe WILL NOT receive any review or updates from the Ubuntu security
    +## team.
    +# Line commented out by installer because it failed to verify:
    +deb http://us.archive.ubuntu.com/ubuntu/ gutsy universe
    +# Line commented out by installer because it failed to verify:
    +deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy universe
    +# Line commented out by installer because it failed to verify:
    +deb http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe
    +# Line commented out by installer because it failed to verify:
    +deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe
    +

  2. +
  3. Install required packages with the following command: +

    +% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev zlib1g-dev
    +   build-essential
    +

    +This snippet includes an artificial line break to maintain a print-friendly document. +
  4. +
  5. +

    Install the X11 development environment with the following commands:

    +

    +% sudo apt-get install x-dev
    +% sudo apt-get install libx11-dev
    +% sudo apt-get install libncurses5-dev
    +

    +
  6. +
+ + +

Ubuntu 8.04

+ +

On a clean system, type the following:

+
+% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev
+zlib1g-dev build-essential
+% sudo apt-get install x-dev
+% sudo apt-get install libx11-dev
+% sudo apt-get install libncurses5-dev
+% sudo apt-get install sun-java5-jdk
+
+ + +

Installing Java

+ +

Android source code includes a hard dependency on the Java Developer Kit (JDK) 5.0 Update 12 or greater. The specific file name of the Update 12 package is jdk-1_5_0_12-linux-i586.bin. To download this version of the Java JDK:

+

    +
  1. Navigate to: http://java.sun.com/products/archive/.
  2. +
  3. Select '5.0 Update 12' from the 'Java 2 Platform Standard Edition (J2SE)' -> 'JDK/JRE - 5.0' field and click 'Go.'
  4. +
  5. Click 'Download JDK.'
  6. +
  7. In the 'Linux Platform' section, click 'Linux self-extracting file' associated with the jdk-1_5_0_12-linux-i586.bin package.
  8. +
  9. Follow the installation instructions.
  10. +
+

+ +

Once you have cleanly installed the JDK, modify your PATH environment variable to include <jdk-install-dir>/jdk1.5.0_12/bin at its beginning so that Dapper will use the correct installation.

+

Ubuntu 7.10

+

An alternative method to quickly install Java is to enable multiverse repo in /etc/apt/sources.list and then execute:

+
+% sudo apt-get install sun-java5-jdk
+
+ + + diff --git a/pdk/docs/porting/stk.jd b/pdk/docs/porting/stk.jd new file mode 100755 index 000000000..a73ed93c3 --- /dev/null +++ b/pdk/docs/porting/stk.jd @@ -0,0 +1,508 @@ +page.title=Sim Toolkit Application (STK) +pdk.version=1.0 +doc.type=porting +@jd:body + + + + +

This document offers a high-level overview of the SIM Toolkit Application for Android 1.0 and is primarily of interest for implementors of the Radio Interface Layer (RIL). The STK is R96 compatible (3GPP TS 11.14 v5.9.0) and complies partially with R99 (3GPP TS 101.267 v8.17.0). See the STK Feature List for the complete feature list.

. +

The Android STK implementation includes three layers:

+
    +
  • STK RIL: Low-level layer provided by the vendor plus libril.
  • +
  • STK Telephony: Protocol translation layer that converts raw messages provided by the STK RIL to application level messages.
  • +
  • STK Application: Provides the user interface interactions needed by the STK.
  • +
+


+ STK schema
+

+

The Sim Toolkit communication flow is bi-directional and commands can originate from the STK RIL packaged in RIL_UNSOL_STK_PROACTIVE_COMMAND, RIL_UNSOL_STK_EVENT_NOTIFY, RIL_UNSOL_REFRESH and RIL_UNSOL_STK_SESSION_END messages.

+

Commands originating from the STK App or STK Telephony layers are packaged in RIL_REQUEST_STK_SEND_TERMINAL_REPSONSE, RIL_REQUEST_SEND_ENVELOPE_COMMAND or RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM.

+

For commands sent or recieved by the STK RIL, it's not necessary to remove unused sub-commands because the upper layers will gracefully ignore unused information contained in the message. The content of each message is encoded in the BER-TLV format except for two:

+
    +
  • RIL_UNSOL_STK_SESSION_END: has no data
  • +
  • RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM: has a single byte of data that indicates accept/reject.
  • +
+

See the Android Platform Development Kit for details.

+ + +

Communication from the RIL up

+ +

Communication to the upper layers is done using the RIL_UNSOL_xxx family of commands defined in /hardware/ril/include/ril.h. The payload for each command is encoded using BER-TLV. As stated above, it is not necessary to remove extraneous fields. This allows the SIM to pass a complete command to the upper layers and simplifies STK RIL code. Below is the mapping from RIL_UNSOL_xxx commands to the SIM commands.

+ + +

RIL_UNSOL_STK_PROACTIVE_COMMAND

+ +

The Sim Toolkit communication flow is bi-directional and commands can originate from the STK RIL packaged in RIL_UNSOL_STK_PROACTIVE_COMMAND, RIL_UNSOL_STK_EVENT_NOTIFY, RIL_UNSOL_REFRESH and RIL_UNSOL_STK_SESSION_END messages.

+ + +
DISPLAY TEXT (6.4.1)
+ +

This command is handled by StkDialogActivity. If the immediate response flag is set, the terminal response is sent with an "OK" (0x00) result code when the message is first received. Otherwise the terminal response is sent when the dialog is dismissed either from user action or it times out.

+

The user sees a dialog box with a message and / or icon, an OK button, and a Cancel button.

+

Terminal responses include:

+
    +
  • "OK" (0x00)
  • +
  • "Session terminated by user" (0x10)
  • +
  • "Backward move by user" (0x11)
  • +
  • "No response from user" (0x12)
  • +
+ + + + +
GET IN KEY (6.4.2)
+ +

This command is processed by StkInputActivity. It displays a dialog box with a prompt and or an icon and yes and no buttons.

+

Terminal responses include:

+

+

    +
  • “OK” (0x00) with “Yes” or “No” as the response text
  • +
  • “Session terminated by user” (0x10) << Currently not supported
  • +
  • “Backward move by user” (0x11)
  • +
  • “No response from user” (0x12)
  • +
+

+ + +
GET INPUT (6.4.3)
+ +

This command is handled by StkInputActivity. +

The user sees a dialog box with a prompt and / or an icon, a text box with optional default text, and an OK button. 'digits only,' 'min,' 'max,' and 'hidden' modes are all supported. +

Terminal responses include:

+
    +
  • OK” (0x00) if the input criteria is met
  • +
  • “Session terminated by user” (0x10) << Currently not supported
  • +
  • “Backward move by user” (0x11)
  • +
  • “No response from user” (0x12)
  • +
+ + +
PLAY TONE (6.4.5)
+ +

This command is processed by ToneDialog.

+

The user sees a dialog box with a prompt for the duration of the tone or until the user presses the back key.

+

Terminal responses include:

+
    +
  • "OK" (0x00) if the tone is played to completion
  • +
  • “Session terminated by user” (0x10) if back button is pressed
  • +
+ + +
SET UP MENU (6.4.8)
+ +

This command is processed by StkAppService. It installs the STK ICON on the home page and prepares the Main menu for use when the ICON is selected. Typically this is the first RIL unsolicited command and should not be sent until after the RIL_RadioFunctions.getVersion routine is called.

+

Terminal reponses:

+
    +
  • “OK” (0x00)
  • +
+

At a later time, the STK ICON will be selected and StkMenuActivity will launch and display the Main menu to the user. If an item is selected, it will be returned to the RIL in RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND with the item id. If no item is selected, the StkMenuActivity will receive a timeout message and return to the Main menu and no message will be sent to the RIL.

+

Depending upon what item is selected, the SIM may perform another action, such as sending another set of menu items via a SELECT ITEM command or performing an action like send an SMS or text display.

+ + +
SELECT ITEM (6.4.9)
+ +

This command is processed by StkMenuActivity. Instead of displaying the Main menu, the list of menu items provided in this command are displayed.

+

Terminal responses: +

    +
  • “OK” (0x00)
  • +
+

The command then proceeds as in the SETUP MENU.

+ + +
SET UP IDLE MODE TEXT (6.4.22)
+ +

StkAppService displays the message and or icon as an Android notification.

+

Terminal responses include:

+
    +
  • OK” (0x00)
  • +
+ + +
LAUNCH BROWSER (6.4.26)
+ +

This command is initially handled by StkDialogActivity and presents the user with a confirmation dialog, a URL, and OK, and cancel buttons. If the user presses OK, the browser is launched using the URL.

+

Terminal responses include:

+
    +
  • “OK” (0x00) the browser has been launched
  • +
  • “Session terminated by user” (0x10)
  • +
  • “Backward move by user” (0x11)
  • +
  • “No response from user” (0x12)
  • +
+ + +

RIL_UNSOL_STK_EVENT_NOTIFY

+ +

The commands in this section are proactive in nature. They are handled by the STK RIL and the upper layers and delivered using RIL_UNSOL_STK_EVENT_NOTIFY message. This distinction is an implementation detail of Android and is not defined in the 3GPP sepcifications.

+

The upper layers handle the UI and the STK RIL handles all other aspects of each command, which means that the STK RIL sends the terminal response (it is never sent by the STK App). Each command must be a properlery-formed proactive command. It is not necessary to remove unused fields. The behavior of any other command within this context sent by RIL_UNSOL_STK_EVENT_NOTIFY is undefined. See Event Notify Command Details.

+
    +
  • SEND SMS (6.4.10) – no response
  • +
  • SEND SS (6.4.11) – no response
  • +
  • SEND USSD (6.4.12) – no response
  • +
  • SET UP CALL (6.4.13) – responds with RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM
  • +
  • SEND DTMF (6.4.24) – no response
  • +
+ + + + +

RIL_UNSOL_SIM_REFRESH

+ +

Used to send the REFRESH command. No response.

+ + +

REFRESH (6.4.7)

+ +

RIL_UNSOL_STK_SESSION_END

+

Sent by the SIM to signal the end of a session. No content and no response.

+

+

+

+ + + +

RIL_UNSOL_STK_SESSION_END

+ +

Sent by SIM to signal end of session. No content and no response.

+ + +

Communication from the application down

+ +

Communication from the upper layers to the RIL uses the commands below (defined in ril.h):

+ + +

RIL_REQUEST_STK_SEND_TERMINAL_REPSONSE

+ +

Used to send a terminal response for commands sent via RIL_UNSOL_STK_PROACTIVE_COMMAND.

+

Contents include TERMINAL RESPONSE (6.8).

+ + +

RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND

+ +

Used to send information from to SIM encoded as BER-TLV tags (see R96 section 13). Two tags are supported:

+
    +
  • BER_MENU_SELECTION_TAG (0xd3); Contents: MENU SELECTION (8)
  • +
  • BER_EVENT_DOWNLOAD_TAG (0xd6); Contents: EVENT DOWNLOAD Language selection (11.8)
  • +
+

Content for these tags include: +

    +
  • MENU SELECTION (8)
  • +
  • EVENT DOWNLOAD Language selection (11.8)
  • +
+ + + +

RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM

+ +

Returns a single-byte parameter:

+
    +
  • 1: accepted
  • +
  • 0: not accepted
  • +
+

This should cause the terminal response to be sent to the SIM.

+ + +

Telephony

+ +

STK Telephony is a protocol translation layer used to convert messages from BERL-TLV format to Application messages and back.

+

On the STK RIL side, STK Telphony receives raw buffer messages from RIL I/F and decodes them into a command parameters container before passing them on to the application. On the Application side, this layer receives application responses for commands and encodes them into raw buffer messages, which then get sent over the RIL I/F back to the SIM card.

+ + +

Feature List

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Feature

Support

Implemented by

PROFILE DOWNLOAD - before radio turn-on

YES

Baseband

SET UP MENU

YES

ME

SELECT ITEM 

YES

ME

GET INPUT

YES

ME

GET INKEY

YES

ME

DISPLAY TEXT

YES

ME

SET UP IDLE MODE TEXT   

YES

ME

SEND SHORT MESSAGE 

YES

Baseband – ME

SEND SS 

YES

Baseband – ME

SEND USSD

YES

Baseband – ME

SEND DTMF

YES

Baseband – ME

LAUNCH BROWSER

YES

ME

SET UP CALL

YES

Baseband – ME

PLAY TONE

YES

ME

POLL INTERVAL

YES

Baseband

POLLING OFF

YES

Baseband

TIMER MANAGEMENT 

YES

Baseband

MORE TIME

YES

Baseband

PROVIDE LOCAL INFORMATION (MCC, MNC, LAC, Cell ID & IMEI)

YES

Baseband

PROVIDE LOCAL INFORMATION (NMR)

YES

Baseband

PROVIDE LOCAL INFORMATION (Timing Advance)

YES

Baseband

PROVIDE LOCAL INFORMATION(battery state)

YES

Baseband

PROVIDE LOCAL INFORMATION (IMEISV)

YES

Baseband

PROVIDE LOCAL INFORMATION (NMR(UTRAN))

YES

Baseband

PROVIDE LOCAL INFORMATION (Search Mode change)

YES

Baseband

REFRESH

YES

ME

SET UP EVENT LIST 

YES

Baseband – ME

Event: MT call

YES

Baseband

Event: Call connected (all modes)

YES

Baseband

Event: Call disconnected (all modes)

YES

Baseband

Event: Idle screen available

NO

 

Event: Browser termination

NO

 

Event: Location status 

YES

Baseband

Event: Data available

NO

 

Event: Channel status

NO

 

Event: Access Technology changed

YES

Baseband

Event: Local Connection

NO

 

Event: Network Search Mode Change

YES

Baseband

GET READER STATUS

NO

 

POWER ON CARD

NO

 

POWER OFF CARD

NO

 

PERFORM CARD ADPU

NO

 

RUN AT COMMAND

NO

 

OPEN CHANNEL

NO

 

CLOSE CHANNEL 

NO

 

RECEIVE DATA

NO

 

SEND DATA

NO

 

GET CHANNEL STATUS

NO

 

CALL CONTROL BY SIM

YES

Baseband

SMS-PP data download

YES

Baseband

SMS-CB data download

YES

Baseband

BIP over GPRS 

NO

 

BIP over USB

NO

 

Text Attributes  

NO

 

Color icons

YES

ME

diff --git a/pdk/docs/porting/system_requirements.jd b/pdk/docs/porting/system_requirements.jd new file mode 100755 index 000000000..0a0b3312c --- /dev/null +++ b/pdk/docs/porting/system_requirements.jd @@ -0,0 +1,60 @@ +page.title=Device Requirements +pdk.version=1.0 +doc.type=porting +@jd:body + +

While Android is designed to support a wide variety of hardware platforms and configurations, this section provides recommended minimum device requirements.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureMinimum RequirementNotes
ChipsetARM-basedFor the first release, Android is primarily targeted towards mobile handsets and portions of the platform, such as Dalvik VM graphics processing, currently assume an ARM architecture.
Memory128 MB RAM; 256 MB Flash ExternalAndroid can boot and run in configurations with less memory, but it isn't recommended.
StorageMini or Micro SD Not necessary for basic bring up, but recommended.
Primary Display HVGA requiredThe current Android interface targets a touch-based HVGA resolution display with a touch-interface no smaller than 2.8 inches in size. However, smaller displays will suffice for initial porting.
Navigation Keys 5-way navigation with 5 application keys, power, camera and volume controls 
Camera2MP CMOSNot required for basic bring up.
USBStandard mini-B USB interfaceAndroid uses the USB interface for flashing the device system images and debugging a running device.
Bluetooth1.2 or 2.0 Not required for initial bring up.
+

If available, your Android device can also benefit from the following optional device characteristics:

+
    +
  • QWERTY keyboard
  • +
  • WiFi
  • +
  • GPS
  • +
diff --git a/pdk/docs/porting/tcpdump.jd b/pdk/docs/porting/tcpdump.jd new file mode 100755 index 000000000..1627bc76f --- /dev/null +++ b/pdk/docs/porting/tcpdump.jd @@ -0,0 +1,90 @@ +page.title=Debugging with tcpdump and other tools +pdk.version=1.0 +doc.type=porting +@jd:body + + + + + + +

Installing tcpdump

+

Pushing the binary to an existing device

+

Download tcpdump from http://www.tcpdump.org/, then execute:

+
+adb root
+adb remount
+adb push /wherever/you/put/tcpdump /system/xbin/tcpdump
+adb shell chmod 6755 /data/local/tmp/tcpdump
+
+

Including tcpdump in the build image

+

If you are running your own build, execute:

+
+mmm external/tcpdump  # install the binary in out/.../system/xbin
+make snod             # build a new system.img that includes it
+
+

Flash the device as usual, for example, fastboot flashball.

+

If you want to build tcpdump by default, add CUSTOM_TARGETS += tcpdump to your buildspec.mk.

+

Running tcpdump

+

You need to have root access on your device.

+

Batch mode capture

+

The typical procedure is to capture packets to a file and then examine the file on the desktop, as illustrated below:

+
+adb shell tcpdump -i any -p -s 0 -w /sdcard/capture.pcap
+# "-i any": listen on any network interface
+# "-p": disable promiscuous mode (doesn't work anyway)
+# "-s 0": capture the entire packet
+# "-w": write packets to a file (rather than printing to stdout)
+
+   ... do whatever you want to capture, then ^C to stop it ...
+
+adb pull /sdcard/capture.pcap .
+sudo apt-get install wireshark  # or ethereal, if you're still on dapper
+wireshark capture.pcap          # or ethereal
+
+   ... look at your packets and be wise ...
+
+

You can run tcpdump in the background from an interactive shell or from Terminal. By default, tcpdump captures all traffic without filtering. If you prefer, add an expression like port 80 to the tcpdump command line.

+

Real time packet monitoring

+

Execute the following if you would like to watch packets go by rather than capturing them to a file (-n skips DNS lookups. -s 0 captures the entire packet rather than just the header):

+
+adb shell tcpdump -n -s 0
+
+

Typical tcpdump options apply. For example, if you want to see HTTP traffic:

+
+adb shell tcpdump -X -n -s 0 port 80
+
+

You can also monitor packets with wireshark or ethereal, as shown below:

+
+# In one shell, start tcpdump.
+adb shell "tcpdump -n -s 0 -w - | nc -l -p 11233"
+
+# In a separate shell, forward data and run ethereal.
+adb forward tcp:11233 tcp:11233 && nc 127.0.0.1 11233 | ethereal -k -S -i -
+
+

Note that you can't restart capture via ethereal. If anything goes wrong, you will need to rerun both commands.

+

For more immediate output, add -l to the tcpdump command line, but this can cause adb to choke (it helps to use a nonzero argument for -s to limit the amount of data captured per packet; -s 100 is sufficient if you just want to see headers).

+

Disabling encryption

+

If your service runs over https, tcpdump is of limited use. In this case, you can rewrite some service URLs to use http, for example:

+
+vendor/google/tools/override-gservices url:calendar_sync_https_proxy \
+  https://www.google.com/calendar rewrite http://android.clients.google.com/proxy/calendar
+
+

Other network debugging commands

+

On the device:

+
    +
  • ifconfig interface: note that unlike Linux, you need to give ifconfig an argument
  • +
  • netcfg: lists interfaces and IP addresses
  • +
  • iftop: like top for network
  • +
  • route: examine the routing table
  • +
  • netstat: see active network connections
  • +
  • nc: netcat connection utility
  • +
+

On the desktop:

+
    +
  • curl: fetch URLs directly to emulate device requests
  • +
diff --git a/pdk/docs/porting/telephony.jd b/pdk/docs/porting/telephony.jd new file mode 100755 index 000000000..dcf577387 --- /dev/null +++ b/pdk/docs/porting/telephony.jd @@ -0,0 +1,230 @@ +page.title=Radio Layer Interface +pdk.version=1.0 +doc.type=porting +@jd:body + + + +

Android's Radio Interface Layer (RIL) provides an abstraction layer between Android telephony services (android.telephony) and radio hardware. The RIL is radio agnostic, and includes support for Global System for Mobile communication (GSM)-based radios. 

+ + +

The diagram below illustrates the RIL in the context of Android's Telephony system architecture.

+

+ +Solid elements represent Android blocks and dashed elements represent partner-specific blocks. + +

The RIL consists of two primary components:

+

    +
  • RIL Daemon: The RIL daemon initializes the Vendor RIL, processes all communication from Android telephony services, and dispatches calls to the Vendor RIL as solicited commands.
  • +
  • Vendor RIL: The radio-specific Vendor RIL of ril.h that processes all communication with radio hardware and dispatches calls to the RIL Daemon (rild) through unsolicited commands.
  • +
+

+ + +

RIL Initialization

+ +

Android initializes the telephony stack and the Vendor RIL at startup as described in the sequence below:

+

    +
  1. RIL daemon reads rild.lib path and rild.libargs system properties to determine the Vendor RIL library to use and any initialization arguments to provide to the Vendor RIL
  2. +
  3. RIL daemon loads the Vendor RIL library and calls RIL_Init to initialize the RIL and obtain a reference to RIL functions
  4. +
  5. RIL daemon calls RIL_register on the Android telephony stack, providing a reference to the Vendor RIL functions
+

+

See the RIL Daemon source code at //device/commands/rild/rild.c for details.

+

System Properties

+

The following RIL-related system properties are set by the RIL library:

+

    +
  • ro.ril.ecclist: list of valid Emergency Call Codes, for example, 911. Values are read from EF_ECC on the SIM and possibly supplmented by tables based on operator, network, or manufacturing code.

+ +

The following RIL_related system properties are available to the RIL library:

+

    +
  • ro.ril.hsxpa: inidcates hsxpa support of target network.
  • +
  • ro.ril.gprsclass: inidcates GPRS class of target network.
  • +
  • ro.ril.enable.3g.prefix=1: adds the 3G prefix to the operator name.
  • +

+ +

RIL Interaction

+ +

There are two forms of communication that the RIL handles:

+
    +
  • Solicited commands: Solicited commands originated by RIL lib, such as DIAL and HANGUP.
  • +
  • Unsolicited responses: Unsolicited responses that originate from the baseband, such as CALL_STATE_CHANGED and NEW_SMS.
  • +
+ + +

Solicited

+ +

The following snippet illustrates the interface for solicited commands:

+
+void OnRequest (int request_id, void *data, size_t datalen, RIL_Token t);
+void OnRequestComplete (RIL_Token t, RIL_Error e, void *response, size_t responselen);
+
+

There are over sixty solicited commands grouped by the following families:

+

+

    +
  • SIM PIN, IO, and IMSI/IMEI (11)
  • +
  • Call status and handling (dial, answer, mute…) (16)
  • +
  • Network status query (4)
  • +
  • Network setting (barring, forwarding, selection…) (12)
  • +
  • SMS (3)
  • +
  • PDP connection (4)
  • +
  • Power and reset (2)
  • +
  • Supplementary Services (5)
  • +
  • Vendor defined and support (4)
    +
  • +
+

+

The following diagram illustrates a solicited call in Android.

+

+ + +

Unsolicited

+ +

The following snippet illustrates the interface for unsolicited commands:

+
+void OnUnsolicitedResponse (int unsolResponse, void *data, size_t datalen);
+
+

There are over ten unsolicited commands grouped by the following families:

+

+

    +
  • Network status changed (4)
  • +
  • New SMS notify (3)
  • +
  • New USSD notify (2)
  • +
  • Signal strength or time changed (2)
  • +
+

+

The following diagram illustrates an unsolicited call in Android.

+

+ + +

Implementing the RIL

+ +

To implement a radio-specific RIL, create a shared library that implements a set of functions required by Android to process radio requests. The required functions are defined in the RIL header (/include/telephony/ril.h).

+

The Android radio interface is radio-agnostic and the Vendor RIL can use any protocol to communicate with the radio. Android provides a reference Vendor RIL, using the Hayes AT command set, that you can use as a quick start for telephony testing and a guide for commercial vendor RILs. The source code for the reference RIL is found at /commands/reference-ril/.

+

Compile your Vendor RIL as a shared library using the convention libril-<companyname>-<RIL version>.so, for example, libril-acme-124.so, where:

+

    +
  • libril: all vendor RIL implementations start with 'libril'
  • +
  • <companyname>: a company-specific abbreviation
  • +
  • <RIL version>: RIL version number
  • +
  • so: file extension
  • +
+

+ + +

RIL_Init

+ +

Your Vendor RIL must define a RIL_Init function that provides a handle to the functions which will process all radio requests. RIL_Init will be called by the Android RIL Daemon at boot time to initialize the RIL.

+ +
+RIL_RadioFunctions *RIL_Init (RIL_Env* env, int argc, char **argv);
+
+ +

RIL_Init should return a RIL_RadioFunctions structure containing the handles to the radio functions:

+
+type structure {
+	int RIL_version;
+	RIL_RequestFunc onRequest;
+	RIL_RadioStateRequest onStateRequest;      
+	RIL_Supports supports;
+	RIL_Cancel onCancel;
+	RIL_GetVersion getVersion;
+} 
+RIL_RadioFunctions;
+
+ + +

RIL Functions

+ +

ril.h defines RIL states and variables, such as RIL_UNSOL_STK_CALL_SETUP, RIL_SIM_READY, RIL_SIM_NOT_READY, as well as the functions described in the tables below. Skim the header file (/device/include/telephony/ril.h) for details.

+ + +

RIL Solicited Command Requests

+ +

The vendor RIL must provide the functions described in the table below to handle solicited commands. The RIL solicited command request types are defined in ril.h with the RIL_REQUEST_ prefix. Check the header file for details.

+

+ + + + + + + + + + + + + + + + + + + + + +
NameDescription
void (*RIL_RequestFunc) (int request, void *data, size_t datalen, RIL_Token t); +

This is the RIL entry point for solicited commands and must be able to handle the various RIL solicited request types defined in ril.h with the RIL_REQUEST_ prefix.

+
    +
  • request is one of RIL_REQUEST_*
  • +
  • data is pointer to data defined for that RIL_REQUEST_* +
  • t should be used in subsequent call to RIL_onResponse
  • +
  • datalen is owned by caller, and should not be modified or freed by callee
  • +
+

Must be completed with a call to RIL_onRequestComplete().  RIL_onRequestComplete() may be called from any thread before or after this function returns. This will  always be called from the same thread, so returning here implies that the radio is ready to process another command (whether or not the previous command has completed).

RIL_RadioState (*RIL_RadioStateRequest)();This function should return the current radio state synchronously.
int (*RIL_Supports)(int requestCode);This function returns "1" if the specified RIL_REQUEST code is supported and 0 if it is not.
void (*RIL_Cancel)(RIL_Token t);

This function is used to indicate that a pending request should be canceled. This function is called from a separate thread--not the thread that calls RIL_RequestFunc.

+

On cancel, the callee should do its best to abandon the request and call RIL_onRequestComplete with RIL_Errno CANCELLED at some later point.

+

Subsequent calls to RIL_onRequestComplete for this request with other results will be tolerated but ignored (that is, it is valid to ignore the cancellation request).

+

RIL_Cancel calls should return immediately and not wait for cancellation.

const char * (*RIL_GetVersion) (void);Return a version string for your Vendor RIL
+ + +

The vendor RIL uses the following callback methods to communicate back to the Android RIL daemon.

+

+ + + + + + + + + + + + + +
NameDescription
void RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen);
    +
  • t is parameter passed in on previous call to RIL_Notification routine.
  • +
  • If e != SUCCESS, then response can be null and is ignored
  • +
  • response is owned by caller, and should not be modified or freed by callee
  • +
  • RIL_onRequestComplete will return as soon as possible
  • +
void RIL_requestTimedCallback (RIL_TimedCallback callback, void *param, const struct timeval *relativeTime);Call user-specified callback function on the same thread that RIL_RequestFunc is called. If relativeTime is specified, then it specifies a relative time value at which the callback is invoked. If relativeTime is NULL or points to a 0-filled structure, the callback will be invoked as soon as possible.

+ + +

RIL Unsolicited Commands

+ +

The functions listed in the table below are call-back functions used by the Vendor RIL to invoke unsolicited commands on the Android platform. See ril.h for details.

+

+ + + + + + + + + +
NameDescription
void RIL_onUnsolicitedResponse(int unsolResponse, const void *data, size_t datalen);
    +
  • unsolResponse is one of RIL_UNSOL_RESPONSE_*
  • +
  • data is pointer to data defined for that RIL_UNSOL_RESPONSE_*
  • +
  • data is owned by caller, and should not be modified or freed by callee
  • +

diff --git a/pdk/docs/porting/wifi.jd b/pdk/docs/porting/wifi.jd new file mode 100755 index 000000000..eea431b32 --- /dev/null +++ b/pdk/docs/porting/wifi.jd @@ -0,0 +1,51 @@ +page.title=Wi-Fi +pdk.version=1.0 +doc.type=porting +@jd:body + +
+
+

In this document

+ + +
+
+ +

Android uses wpa_supplicant as the platform interface to the Wi-Fi device. Your Wi-Fi driver must be compatible with the standard wpa_supplicant in addition to extensions added to the supplicant (specifically, the "DRIVER" commands described in wifi.h/wifi_command()).

+ + +

Building a Wi-Fi Library

+ +

To create a Wi-Fi driver for Android:

+

    +
  • create a shared library that implements the interface defined in include/hardware/wifi.h, which also defines the Wi-Fi supplicant.
  • +
  • Follow the instructions posted at http://hostap.epitest.fi/wpa_supplicant/.
  • +
  • Place your driver in libs/hardware/wifi/
  • +
  • Test your driver using the command line wpa_cli utilities.
  • +
+ +

You can find the default implementation in libs/hardware/wifi/wifi.c. If you need to make changes, create a new source file similar to wifi.c, for example, wifi_mywifi.c.

+ +

Update the default Android.mk file (libs/hardware/wifi/Android.mk) as shown below.

+
+LOCAL_SHARED_LIBRARIES += libnetutils
+
+ifeq ($(TARGET_PRODUCT),acme)
+LOCAL_SRC_FILES += wifi/wifi_mywifi.c
+else
+LOCAL_SRC_FILES += wifi/wifi.c
+endif
+
+ + +

Interface

+ + + +

Note: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, click here.

+ + + diff --git a/pdk/docs/source/building-dream.jd b/pdk/docs/source/building-dream.jd new file mode 100644 index 000000000..71b4f5890 --- /dev/null +++ b/pdk/docs/source/building-dream.jd @@ -0,0 +1,33 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

Building For Dream +

+
The basic manifest for cupcake (and above) defines which projects are needed to do a generic build for the emulator or for unlocked Dream devices (e.g. the Android Dev Phone 1). You need to have an appropriate device running a matching official image.

To build donut or master for dream (your device needs to be an ADP1 running an official 1.6 system):
  1. Follow thenormal steps +to setup repo and check out the sources. +
  2. +
  3. At the root of your source tree, run ". build/envsetup.sh" like you normally would for an emulator build. +
  4. +
  5. Run "make adb" if you don't already have adb in your path. +
  6. +
  7. run "adb root".
  8. +
  9. in vendor/htc/dream-open/ there is a script called "extract-files.sh" that must be run (from that directory) to extract some proprietary binaries from your device (*). You only need to do this once.
  10. +
  11. run "lunch aosp_dream_us-eng" to specifically configure the build system for dream (the default is the equivalent of "lunch generic-eng", which doesn't contain dream-specific files).
  12. +
  13. run make from the top of the source tree. +
  14. +
  15. from this point, the fastboot tool (which is put automatically in your path) can be used to flash a device: boot the device into the bootloader by holding the back key while pressing the power key, and run "fastboot -w flashall".
  16. +
+To build cupcake for dream (your device needs to be an ADP1 running an official 1.5 system):
  1. Follow thenormal steps +to setup repo and check out the sources. +
  2. +
  3. At the root of your source tree, run ". build/envsetup.sh" like you normally would for an emulator build. +
  4. +
  5. Run "make adb" if you don't already have adb in your path.
  6. +
  7. in vendor/htc/dream-open/ there is a script called "extract-files.sh" that must be run (from that directory) to extract some proprietary binaries from your device (*). You only need to do this once.
  8. +
  9. run "lunch htc_dream-eng" to specifically configure the build system for dream (the default is the equivalent of "lunch generic-eng", which doesn't contain dream-specific files).
  10. +
  11. run make from the top of the source tree. +
  12. +
  13. from this point, the fastboot tool (which is put automatically in your path) can be used to flash a device: boot the device into the bootloader by holding the back key while pressing the power key, and run "fastboot -w flashall".
  14. +
+* The Dream device software contains some proprietary binaries.For contractual reasons, these cannot be redistributed to be used directly with the Android Open-Source Project, but the provided script may be used to extract these binaries from your development device so that they can be correctly included in your build.These libraries include the openGL|ES library, the Qualcomm camera library, the HTC Radio Interface Library, etc. +
diff --git a/pdk/docs/source/cla-corporate.jd b/pdk/docs/source/cla-corporate.jd new file mode 100644 index 000000000..5ddfe6f0b --- /dev/null +++ b/pdk/docs/source/cla-corporate.jd @@ -0,0 +1,53 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

Corporate Contributor License Grant - Android Open Source Project +

+

In order to clarify the intellectual property license granted with Contributions from any person or entity, the Android Open Source Project (the "Project") must have a Contributor License Grant ("Grant") on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor as well as the protection of the Project and the Android Open Source Project Leads (the "Project Leads"); it does not change your rights to use your own Contributions for any other purpose. +

+

This version of the Grant allows an entity (the "Corporation") to submit Contributions to the Project Leads, to authorize Contributions submitted by its designated employees to the Project Leads, and to grant copyright and patent licenses thereto. If you have not already done so, please complete and send an original signed Grant to +

+
Google Inc.
Attn: Open Source Program Office
1600 Amphitheatre Pkwy
Building 43
Mountain View, CA 94043
U.S.A.
+

Scanned agreements may also be emailed in PDF form to cla-submissions@google.com +

+

If necessary, you may send it by facsimile to (650) 887-1625. Please read this document carefully before signing and keep a copy for your records. +

+
Corporation name: ___________________________________________________



Corporation address: ________________________________________________



_____________________________________________________________________



_____________________________________________________________________



Point of Contact: ___________________________________________________



E-Mail: ____________________________________________________________



Telephone: _____________________



Fax: ___________________________

+

You accept and agree to the following terms and conditions for Your present and future Contributions submitted to the Project. Except for the license granted herein to the Project Leads and recipients of software distributed by the Project Leads, You reserve all right, title, and interest in and to Your Contributions. +

+
  1. Definitions. +

    +

    "You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Grant to the Project Leads. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +

    +

    "Contribution" shall mean the code, documentation or other original works of authorship expressly identified in Schedule B, as well as any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Project Leads for inclusion in, or documentation of, any of the products managed or maintained by the Project Leads (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Project Leads or their representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Project Leads for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution." +

    +
  2. +
  3. Grant of Copyright License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works. +

    +
  4. +
  5. Grant of Patent License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Grant for that Contribution or Work shall terminate as of the date such litigation is filed. +

    +
  6. +
  7. You represent that You are legally entitled to grant the above license. You represent further that each employee of the Corporation designated on Schedule A below (or in a subsequent written modification to that Schedule) is authorized to submit Contributions on behalf of the Corporation. +

    +
  8. +
  9. You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others). +

    +
  10. +
  11. You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. +

    +
  12. +
  13. Should You wish to submit work that is not Your original creation, You may submit it to the Project Leads separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".

    +
  14. +
  15. It is your responsibility to notify the Project Leads when any change is required to the list of designated employees authorized to submit Contributions on behalf of the Corporation, or to the Corporation's Point of Contact with the Project. +

    +
  16. +
+



Please sign: __________________________________ Date: _______________



Title: _______________________________________________________________



Corporation: __________________________________________________________

+

+Schedule A

+[Initial list of designated employees. NB: authorization is not tied to particular Contributions.] +

+Schedule B

+[Identification of optional concurrent software grant. Would be left blank or omitted if there is no concurrent software grant.] +
diff --git a/pdk/docs/source/cla-individual.jd b/pdk/docs/source/cla-individual.jd new file mode 100644 index 000000000..1433318b6 --- /dev/null +++ b/pdk/docs/source/cla-individual.jd @@ -0,0 +1,46 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

Individual Contributor License Grant - Android Open Source Project +

+

Please visit thecode review tool +to execute the grant online.This page provides the text of the Individual Contributor License Grant for your quick review. +

+


+

In order to clarify the intellectual property license granted with Contributions from any person or entity, the Android Open Source Project (the "Project") must have a Contributor License Grant ("Grant") on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor as well as the protection of the Project and the Android Open Source Project Leads (the "Project Leads"); it does not change your rights to use your own Contributions for any other purpose. If you have not already done so, please complete and send an original signed Grant to +

+
Google Inc.
Attn: Open Source Program Office
1600 Amphitheatre Pkwy
Building 43
Mountain View, CA 94043
U.S.A.
+

Scanned agreements may also be emailed in PDF form to cla-submissions@google.com, sent by facsimile to (650) 887-1625, orsigned electronically +. +

+

Please read this document carefully before signing and keep a copy for your records. +

+


Full name: ____________________________ E-Mail: ______________________



Mailing Address: ______________________ Telephone: ___________________



_______________________________________ Facsimile: ___________________



_______________________________________ Country: ___________________


+

You accept and agree to the following terms and conditions for Your present and future Contributions submitted to the Project. Except for the license granted herein to the Project Leads and recipients of software distributed by the Project Leads, You reserve all right, title, and interest in and to Your Contributions. +

+


+
  1. Definitions. "You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Grant. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Project Leads for inclusion in, or documentation of, any of the products managed or maintained by the Project Leads (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Project Leads or their representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Project Leads for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution." +

    +
  2. +
  3. Grant of Copyright License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works. +

    +
  4. +
  5. Grant of Patent License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Grant for that Contribution or Work shall terminate as of the date such litigation is filed. +

    +
  6. +
  7. You represent that you are legally entitled to grant the above license. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to the Project Leads, or that your employer has executed a separate Corporate Contributor License Grant with the Project Leads. +

    +
  8. +
  9. You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others). You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions. +

    +
  10. +
  11. You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. +

    +
  12. +
  13. Should You wish to submit work that is not Your original creation, You may submit it to the Project Leads separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".

    +
  14. +
  15. You agree to notify the Project Leads of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect. +

    +
  16. +
+
diff --git a/pdk/docs/source/code-style.jd b/pdk/docs/source/code-style.jd new file mode 100644 index 000000000..540ac997e --- /dev/null +++ b/pdk/docs/source/code-style.jd @@ -0,0 +1,438 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

Code Style Guide +

+
+

Android Code Style Rules

+

The rules below are not guidelines or recommendations, but strict rules.You may not disregard the rules we list below +except as approved on a need-to-use basis. +

+

Not all existing code follows these rules, but all new code is expected to. +

+

Java Language Rules +

+

We follow standard Java coding conventions. We add a few rules: +

+
  1. Exceptions +: Never catch and ignore them without explanation. +
  2. +
  3. Exceptions +: do not catch generic Exception, except in library code at the root of the stack. +
  4. +
  5. Finalizers +: generally don't use them. +
  6. +
  7. Imports +: Fully qualify imports +
  8. +
+

Java Library Rules +

+

There are conventions for using Android's Java libraries and tools. In some cases, the convention has changed in important ways and older code might use a deprecated pattern or library. When working with such code, it's okay to continue the existing style (seeConsistency +). When creating new components never use deprecated libraries. +

+

Java Style Rules +

+

Programs are much easier to maintain when all files have a consistent style. We follow the standard Java coding style, as defined by Sun in theirCode Conventions for the Java Programming Language +, with a few exceptions and additions. This style guide is comprehensive and detailed and is in common usage in the Java community. +

+

In addition, we enforce the following style rules: +

+
  1. Comments/Javadoc +: write it; use standard style +
  2. +
  3. Short methods +: don't write giant methods +
  4. +
  5. Fields: should either be at the top of the file, or immediately before the methods that use them +
  6. +
  7. Local variables +: limit the scope +
  8. +
  9. Imports +: android; third party alphabetical; java(x) +
  10. +
  11. Indentation +: 4 spaces, no tabs. +
  12. +
  13. Line length +: 100 columns +
  14. +
  15. Field names +: Non-public, non-static fields start with m. Static fields start s. +
  16. +
  17. Braces +: Opening braces don't go on their own line. +
  18. +
  19. Annotations +: Use the standard annotations. +
  20. +
  21. Acronyms are words +: Treat acronyms as words in names, yielding XmlHttpRequest, getUrl(), etc. +
  22. +
  23. TODO style +: "TODO: write this description" +
  24. +
  25. Consistency +: Look at what's around you! +
  26. +
  27. Logging +: Be careful with logging. It's expensive. +
  28. +
+

Javatests Style Rules +

+
  1. Naming test methods +: testMethod_specificCase is ok +
  2. +
+

+Java Language Rules +

+

Exceptions: do not ignore +

+Sometimes it is tempting to write code that completely ignores an exception like this: +
void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) {
}
}

+

You must never do this. While you may think that your code will never encounter this error condition or that it is not important to handle it, ignoring exceptions like above creates mines in your code for someone else to trip over some day. You must handle every Exception in your code in some principled way. The specific handling varies depending on the case. +

+
Anytime somebody has an empty catch clause they should have a creepy feeling. There are definitely times when it is actually the correct thing to do, but at least you have to think about it. In Java you can't escape the creepy feeling.
+
+

Acceptable alternatives (in order of preference) are: +

+
  • Throw the exception up to the caller of your method. +
    void setServerPort(String value) throws NumberFormatException {
    serverPort = Integer.parseInt(value);
    }

    +
  • +
  • Throw a new exception that's appropriate to your level of abstraction. +
    void setServerPort(String value) throws ConfigurationException {
    try {
    serverPort = Integer.parseInt(value);
    } catch (NumberFormatException e) {
    throw new ConfigurationException("Port " + value + " is not valid.");
    }

    +
  • +
  • Handle the error gracefully and substitute an appropriate value in the catch {} block. +
    /** Set port. If value is not a valid number, 80 is substituted. */
    void setServerPort(String value) {
    try {
    serverPort = Integer.parseInt(value);
    } catch (NumberFormatException e) {
    serverPort = 80; // default port for server
    }
    +
  • +
  • Catch the Exception and throw a new RuntimeException. This is dangerous: only do it if you are positive that if this error occurs, the appropriate thing to do is crash. +
    /** Set port. If value is not a valid number, die. */
    void setServerPort(String value) {
    try {
    serverPort = Integer.parseInt(value);
    } catch (NumberFormatException e) {
    throw new RuntimeException("port " + value " is invalid, ", e);
    }
    +Note that the original exception is passed to the constructor for RuntimeException. This wrapped exception paradigm is very useful but only works in Java 1.4. If your code must compile under Java 1.3, you will need to omit the exception that is the cause.

  • +
  • Last resort: if you are confident that actually ignoring the exception is appropriate then you may ignore it, but you must also comment why with a good reason: +
    /** If value is not a valid number, original port number is used. */
    void setServerPort(String value) {
    try {
    serverPort = Integer.parseInt(value);
    } catch (NumberFormatException e) {
    // Method is documented to just ignore invalid user input.
    // serverPort will just be unchanged.
    }
    }
    +
  • +
+

Exceptions: do not catch generic Exception +

+Sometimes it is tempting to be lazy when catching exceptions and do something like this: +
try {
someComplicatedIOFunction(); // may throw IOException
someComplicatedParsingFunction(); // may throw ParsingException
someComplicatedSecurityFunction(); // may throw SecurityException
// phew, made it all the way
} catch (Exception e) { // I'll just catch all exceptions
handleError(); // with one generic handler!
}

+You should not do this. In almost all cases it is inappropriate to catch generic Exception or Throwable, preferably not Throwable, because it includes Error exceptions as well. It is very dangerous. It means that Exceptions you never expected (including RuntimeExceptions like ClassCastException) end up getting caught in application-level error handling. It obscures the failure handling properties of your code. It means if someone adds a new type of Exception in the code you're calling, the compiler won't help you realize you need to handle that error differently. And in most cases you shouldn't be handling different types of exception the same way, anyway. +

There are rare exceptions to this rule: certain test code and top-level code where you want to catch all kinds of errors (to prevent them from showing up in a UI, or to keep a batch job running). In that case you may catch generic Exception (or Throwable) and handle the error appropriately. You should think very carefully before doing this, though, and put in comments explaining why it is safe in this place. +

+

Alternatives to catching generic Exception: +

+
  • Catch each exception separately as separate catch blocks after a single try. This can be awkward but is still preferable to catching all Exceptions. Beware repeating too much code in the catch blocks. +
  • +
  • Refactor your code to have more fine-grained error handling, with multiple try blocks. Split up the IO from the parsing, handle errors separately in each case. +
  • +
  • Rethrow the exception. Many times you don't need to catch the exception at this level anyway, just let the method throw it. +
  • +
+Remember: exceptions are your friend! When the compiler complains you're not catching an exception, don't scowl. Smile: the compiler just made it easier for you to catch runtime problems in your code. +

Finalizers +

+

What it is +: Finalizers are a way to have a chunk of code executed when an object is garbage collected. +

+

Pros +: can be handy for doing cleanup, particularly of external resources. +

+

Cons +: there are no guarantees as to when a finalizer will be called, or even that it will be called at all. +

+

Decision +: we don't use finalizers. In most cases, you can do what you need from a finalizer with good exception handling. If you absolutely need it, define a close() method (or the like) and document exactly when that method needs to be called. See InputStream for an example. In this case it is appropriate but not required to print a short log message from the finalizer, as long as it is not expected to flood the logs. +

+

The one exception is it is OK to write a finalizer if all it does is make calls to X.assertTrue(). +

+

Imports +

+

+Wildcards in imports +

+

What it is +: When you want to use class Bar from package foo,there are two possible ways to import it: +

+
  1. import foo.*; +
  2. +
  3. import foo.Bar; +
  4. +
+

Pros of #1 +: Potentially reduces the number of import statements. +

+

Pros of #2 +: Makes it obvious what classes are actually used. Makes code more readable for maintainers. +

+

Decision +:Use style #2 for importing all Android code. An explicit exception is made for java standard libraries (java.util.*, java.io.*, etc.) and unit test code (junit.framework.*). +

+

Comments/Javadoc +

+

Every file should have a copyright statement at the top. Then a package statement and import statements should follow, each block separated by a blank line. And then there is the class or interface declaration. In the Javadoc comments, describe what the class or interface does. +

+
/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.android.internal.foo;

import android.os.Blah;
import android.view.Yada;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
* Does X and Y and provides an abstraction for Z.
*/
public class Foo {
...
}
+

Every class and nontrivial public method you writemust +contain a Javadoc comment with at least one sentence describing what the class or method does. This sentence should start with a 3rd person descriptive verb. Examples: +

+
/** Returns the correctly rounded positive square root of a double value. */
static double sqrt(double a) {
}

/**
* Constructs a new String by converting the specified array of
* bytes using the platform's default character encoding.
*/
public String(byte[] bytes) {
}
+

You do not need to write Javadoc for trivial get and set methods such as setFoo() if all your Javadoc would say is "sets Foo". If the method does something more complex (such as enforcing a constraint or having an important side effect), then you must document it. And if it's not obvious what the property "Foo" means, you should document it. +

+

Every method you write, whether public or otherwise, would benefit from Javadoc. Public methods are part of an API and therefore require Javadoc. +

+Android does not currently enforce a specific style for writing Javadoc comments, but youshould +follow theSun Javadoc conventions +. +

Short methods +

+To the extent that it is feasible, methods should be kept small and focused. It is, however, recognized that long methods are sometimes appropriate, so no hard limit is placed on method length. If a method exceeds 40 lines or so, think about whether it can be broken up without harming the structure of the program. +

Local variables +

+The scope of local variables should be kept to a minimum (Effective Java +Item 29). By doing so, you increase the readability and maintainability of your code and reduce the likelihood of error. Each variable should be declared in the innermost block that encloses all uses of the variable. +

Local variables should be declared at the point they are first used. Nearly every local variable declaration should contain an initializer. If you don't yet have enough information to initialize a variable sensibly, you should postpone the declaration until you do. +

+

One exception to this rule concerns try-catch statements. If a variable is initialized with the return value of a method that throws a checked exception, it must be initialized inside a try block. If the value must be used outside of the try block, then it must be declared before the try block, where it cannot yet be sensibly initialized: +

+
// Instantiate class cl, which represents some sort of Set
Set s = null;
try {
s = (Set) cl.newInstance();
} catch(IllegalAccessException e) {
throw new IllegalArgumentException(cl + " not accessible");
} catch(InstantiationException e) {
throw new IllegalArgumentException(cl + " not instantiable");
}

// Exercise the set
s.addAll(Arrays.asList(args));
+

But even this case can be avoided by encapsulating the try-catch block in a method: +

+
Set createSet(Class cl) {
// Instantiate class cl, which represents some sort of Set
try {
return (Set) cl.newInstance();
} catch(IllegalAccessException e) {
throw new IllegalArgumentException(cl + " not accessible");
} catch(InstantiationException e) {
throw new IllegalArgumentException(cl + " not instantiable");
}
}
...
// Exercise the set
Set s = createSet(cl);
s.addAll(Arrays.asList(args));
+Loop variables should be declared in the for statement itself unless there is a compelling reason to do otherwise: +
for (int i = 0; i n; i++) {
doSomething(i);
}

for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomethingElse(i.next());
}


+

Imports +

+The ordering of import statements is:Android importsImports from third parties (com, junit, net, org)
java and javax +

To exactly match the IDE settings, the imports should be: +

+Alphabetical within each grouping.
Capital letters are considered to come before lower case letter (e.g. Z before a).There should be a blank line between each major grouping (android, com, junit, net, org, java, javax). +

+Why? +

+

Originally there was no style requirement on the ordering. This meant that the IDE's were either always changing the ordering, or IDE developers had to disable the automatic import management features and maintain the imports by hand. This was deemed bad. When java-style was asked, the preferred styles were all over the map. It pretty much came down to our needing to "pick an ordering and be consistent." So we chose a style, updated the javaguide and made the IDE's obey it. We expect that as IDE users work on the code, the imports in all of the packages will end up matching this pattern without any extra engineering effort. +

+

The style chosen such that: +

+The imports people want to look at first tend to be at the top (android)The imports people want to look at least tend to be at the bottom (java)Humans can easily follow the styleThe IDE's can follow the style +

+What about static imports? +

+The use and location of static imports have been mildly controversial issues. Some people would prefer static imports to be interspersed with the remaining imports, some would prefer them reside above or below all other imports. Additinally, we have not yet come up with a way to make all IDEs use the same ordering. +

Since most people consider this a low priority issue, just use your judgement and please be consistent. +

+ +

Indentation +

+

We use 4 space indents for blocks. We never use tabs. When in doubt, be consistent with code around you. +

+

We use 8 space indents for line wraps, including function calls and assignments. For example, this is correct: +

+
Instrument i
= someLongExpression(that, wouldNotFit, on, one, line);
+and this is not correct: +
Instrument i
= someLongExpression(that, wouldNotFit, on, one, line);
+

Field Names +

+
  • Non-public, non-static field names start with m. +
  • +
  • Static field names start with s. +
  • +
  • Other fields start with a lower case letter. +
  • +
  • Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES. +
  • +
+

For example: +

+
public class MyClass {
public static final int SOME_CONSTANT = 42;
public int publicField;
private static MyClass sSingleton;
int mPackagePrivate;
private int mPrivate;
protected int mProtected;
}
+

Braces +

+

Braces do not go on their own line; they go on the same line as the code before them. So: +

+
class MyClass {
int func() {
if (something) {
// ...
} else if (somethingElse) {
// ...
} else {
// ...
}
}
}
+

We require braces around the statements for a conditional. Except, if the entire conditional (the condition and the body) fit on one line, you may (but are not obligated to) put it all on one line. That is, this is legal: +

+
if (condition) {
body; // ok
}
if (condition) body; // ok
+

but this is still illegal: +

+
if (condition)
body; // bad
+

Line length +

+

Each line of text in your code should be at most 100 characters long. +

+

There has been lots of discussion about this rule and the decision remains that 100 characters is the maximum. +

+

Exception: if a comment line contains an example command or a literal URL longer than 100 characters, that line may be longer than 100 characters for ease of cut and paste. +

+

Exception: import lines can go over the limit because humans rarely see them. This also simplifies tool writing. +

+

+Java 1.5 Annotations +

+

Annotations should precede other modifiers for the same language element. Simple marker annotations (e.g. @Override) can be listed on the same line with the language element. If there are multiple annotations, or parameterized annotations, they should each be listed one-per-line in alphabetical order. +

+

Android -standard practices for the three predefined annotations in Java 1.5's are: +

+@DeprecatedThe @Deprecated annotation must be used whenever the use of the annotated element is discouraged. If you use the @Deprecated annotation, you must also have a @deprecated Javadoc tag and it should name an alternate implementation. In addition, remember that a @Deprecated method isstill +supposed to work. +

If you see old code that has a @deprecated Javadoc tag, please add the @Deprecated annotation. +

+@OverrideThe @Override annotation must be used whenever a method overrides the declaration or implementation from a super-class. +

For example, if you use the {@inheritdocs} Javadoc tag, and derive from a class (not an interface), you must also annotate that the method @Overrides the parent class's method. +

+@SuppressWarningsThe @SuppressWarnings annotation should only be used under circumstances where it is impossible to eliminate a warning. If a warning passes this "impossible to eliminate" test, the@SuppressWarnings annotationmust +be used, so as to ensure that all warnings reflect actual problems in the code. +

When a @SuppressWarnings annotation is necessary, it must be prefixed with a TODO comment that explains the "impossible to eliminate" condition. This will normally identify an offending class that has an awkward interface. For example: +

+
// TODO: The third-party class com.third.useful.Utility.rotate() needs generics
@SuppressWarnings({"generic-cast"})
ListStringblix = Utility.rotate(blax);
+When a @SuppressWarnings annotation is required, the code should be refactored to isolate the software elements where the annotation applies. +

Acronyms in names +

+

Treat acronyms and abbreviations as words. The names are much more readable: +

+ + + + + + + + + + + +
Good +Bad +
XmlHttpRequestXMLHTTPRequest +
getCustomerIdgetCustomerID +
+ +

This style rule also applies when an acronym or abbreviation is the entire name: +

+ + + + + + + + + + + + + + +
Good +Bad +
class Htmlclass HTML +
String url;String URL; +
long id;long ID; +
+ +

Both the JDK and the Android code bases are very inconsistent with regards to acronyms, therefore, it is virtually impossible to be consistent with the code around you. Bite the bullet, and treat acronyms as words. +

+

For further justifications of this style rule, seeEffective Java +Item 38 andJava Puzzlers +Number 68. +

+

TODO style +

+

Use TODO comments for code that is temporary, a short-term solution, or good-enough but not perfect. +

+

TODOs should include the string TODO in all caps, followed by a colon: +

+
// TODO: Remove this code after the UrlTable2 has been checked in.

// TODO: Change this to use a flag instead of a constant.
+

If your TODO is of the form "At a future date do something" make sure that you either include a very specific date ("Fix by November 2005") or a very specific event ("Remove this code after all production mixers understand protocol V7."). +

+

+Consistency +

+

Our parting thought: BE CONSISTENT. If you're editing code, take a few minutes to look at the code around you and determine its style. If they use spaces around their if clauses, you should too. If their comments have little boxes of stars around them, make your comments have little boxes of stars around them too. +

+

The point of having style guidelines is to have a common vocabulary of coding, so people can concentrate on what you're saying, rather than on how you're saying it. We present global style rules here so people know the vocabulary. But local style is also important. If code you add to a a file looks drastically different from the existing code around it, it throws readers out of their rhythm when they go to read it. Try to avoid this. +

+

Logging +

+

While logging is necessary it has a significantly negative impact on performance and quickly loses its usefulness if it's not kept reasonably terse. The logging facilities provides five different levels of logging. Below are the different levels and when and how they should be used. +

+ +
  • ERROR: +This level of logging should be used when something fatal has happened, i.e. something that will have user-visible consequences and won't be recoverable without explicitly deleting some data, uninstalling applications, wiping the data partitions or reflashing the entire phone (or worse). This level is always logged. Issues that justify some logging at the ERROR level are typically good candidates to be reported to a statistics-gathering server. +
  • +
  • WARNING: +This level of logging should used when something serious and unexpected happened, i.e. something that will have user-visible consequences but is likely to be recoverable without data loss by performing some explicit action, ranging from waiting or restarting an app all the way to re-downloading a new version of an application or rebooting the device. This level is always logged. Issues that justify some logging at the WARNING level might also be considered for reporting to a statistics-gathering server. +
  • +
  • INFORMATIVE: +This level of logging should used be to note that something interesting to most people happened, i.e. when a situation is detected that is likely to have widespread impact, though isn't necessarily an error. Such a condition should only be logged by a module that reasonably believes that it is the most authoritative in that domain (to avoid duplicate logging by non-authoritative components). This level is always logged. +
  • +
  • DEBUG: +This level of logging should be used to further note what is happening on the device that could be relevant to investigate and debug unexpected behaviors. You should log only what is needed to gather enough information about what is going on about your component. If your debug logs are dominating the log then you probably should be using verbose logging. This level will be logged, even on release builds, and is required to be surrounded by an if (LOCAL_LOG) or if (LOCAL_LOGD) block, where LOCAL_LOG[D] is defined in your class or subcomponent, so that there can exist a possibility to disable all such logging. There must therefore be no active logic in an if (LOCAL_LOG) block. All the string building for the log also needs to be placed inside the if (LOCAL_LOG) block. The logging call should not be re-factored out into a method call if it is going to cause the string building to take place outside of the if (LOCAL_LOG) block. There is some code that still says if (localLOGV). This is considered acceptable as well, although the name is nonstandard. +
  • +
  • VERBOSE: +This level of logging should be used for everything else. This level will only be logged on debug builds and should be surrounded by if (LOCAL_LOGV) block (or equivalent) so that it can be compiled out by default. Any string building will be stripped out of release builds and needs to appear inside the if (LOCAL_LOGV) block. +
  • +
+

Note: +Within a given module, other than at the VERBOSE level, an error should only be reported once if possible: within a single chain of function calls within a module, only the innermost function should return the error, and callers in the same module should only add some logging if that significantly helps to isolate the issue. +

+

Note: +In a chain of modules, other than at the VERBOSE level, when a lower-level module detects invalid data coming from a higher-level module, the lower-level module should only log this situation to the DEBUG log, and only if logging provides information that is not otherwise available to the caller. Specifically, there is no need to log situations where an exception is thrown (the exception should contain all the relevant information), or where the only information being logged is contained in an error code. This is especially important in the interaction between the framework and applications, and conditions caused by third-party applications that are properly handled by the framework should not trigger logging higher than the DEBUG level. The only situations that should trigger logging at the INFORMATIVE level or higher is when a module or application detects an error at its own level or coming from a lower level. +

+

Note: +When a condition that would normally justify some logging is likely to occur many times, it can be a good idea to implement some rate-limiting mechanism to prevent overflowing the logs with many duplicate copies of the same (or very similar) information. +

+

Note: +Losses of network connectivity are considered common and fully expected and should not be logged gratuitously. A loss of network connectivity that has consequences within an app should be logged at the DEBUG or VERBOSE level (depending on whether the consequences are serious enough and unexpected enough to be logged in a release build). +

+

Note: +A full filesystem on a filesystem that is acceessible to or on behalf of third-party applications should not be logged at a level higher than INFORMATIVE. +

+

Note: +Invalid data coming from any untrusted source (including any file on shared storage, or data coming through just about any network connections) is considered expected and should not trigger any logging at a level higher then DEBUG when it's detected to be invalid (and even then logging should be as limited as possible). +

+

Note: +Keep in mind that the '+' operator, when used on Strings, implicitly creates a StringBuilder with the default buffer size (16 characters) and potentially quite a few other temporary String objects, i.e. that explicitly creating StringBuilders isn't more expensive than relying on the default '+' operator (and can be a lot more efficient in fact). Also keep in mind that code that calls Log.v() is compiled and executed on release builds, including building the strings, even if the logs aren't being read. +

+

Note: +Any logging that is meant to be read by other people and to be available in release builds should be terse without being cryptic, and should be reasonably understandable. This includes all logging up to the DEBUG level. +

+

Note: +When possible, logging should be kept on a single line if it makes sense. Line lengths up to 80 or 100 characters are perfectly acceptable, while lengths longer than about 130 or 160 characters (including the length of the tag) should be avoided if possible. +

+

Note: +Logging that reports successes should never be used at levels higher than VERBOSE. +

+

Note: +Temporary logging that is used to diagnose an issue that's hard to reproduce should be kept at the DEBUG or VERBOSE level, and should be enclosed by if blocks that allow to disable it entirely at compile-time. +

+

Note: +Be careful about security leaks through the log. Private information should be avoided. Information about protected content must definitely be avoided. This is especially important when writing framework code as it's not easy to know in advance what will and will not be private information or protected content. +

+

Note: +System.out.println() (or printf() for native code) should never be used. System.out and System.err get redirected to /dev/null, so your print statements will have no visible effects. However, all the string building that happens for these calls still gets executed. +

+

Note: +The golden rule of logging is that your logs may not unnecessarily push other logs out of the buffer, just as others may not push out yours. +

+

+Javatests Style Rules +

+ +

Naming test methods +

+When naming test methods, you can use an underscore to seperate what is being tested from the specific case being tested. This style makes it easier to see exactly what cases are being tested. +

Example: +

+
testMethod_specificCase1 
testMethod_specificCase2
+
+ +
void testIsDistinguishable_protanopia() {
ColorMatcher colorMatcher = new ColorMatcher(PROTANOPIA)
assertFalse(colorMatcher.isDistinguishable(Color.RED, Color.BLACK))
assertTrue(colorMatcher.isDistinguishable(Color.X, Color.Y))
}
+
+
+
+ diff --git a/pdk/docs/source/documentation.jd b/pdk/docs/source/documentation.jd new file mode 100644 index 000000000..8be570173 --- /dev/null +++ b/pdk/docs/source/documentation.jd @@ -0,0 +1,56 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

Documentation +

+

+ As this page grows, it will include resources for wireless operators and handset manufacturers as well as for platform developers.

+

+Resources for platform developers +

+ + Google I/O videos:
+ + Getting started with the Android source code:
+ + Repo and Git resources:
+ + Documentation on specific tasks:
+
diff --git a/pdk/docs/source/download.jd b/pdk/docs/source/download.jd new file mode 100644 index 000000000..9f675121d --- /dev/null +++ b/pdk/docs/source/download.jd @@ -0,0 +1,367 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

Get source + +

+
+
+ + +
For information about current problems and fixes, see Known issues +.
+
+

This document describes how to set up your local work environment, how to use Repo to get the Android files, and how to build the files on your machine.

Related reading:
+
  • For an overview of the entire code-review and code-update process, see Workflow +.
  • +
  • For reference details about Repo, see Using Repo and Git +.
  • +
+

+What's in the source?

+
For a description of all the projects that make up the Android source code, see Project layout +. To see snapshots and histories of the files available in the public Android repositories, visit the GitWeb +web interface.
+
+
The source is approximentely 2.1GB in size.You will need 6GB free to complete the build.

+

+Setting up your machine

+
To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported.
+

+

+Linux

+The Android build is routinely tested on recent versions of Ubuntu (6.06 and later), but reports of successes or failures on other distributions are welcome.

+Ubuntu Linux (32-bit x86)

+
To set up your Linux development environment, make sure you have the following:
+
  • Required Packages:
  • +
    • Git 1.5.4 or newer and the GNU Privacy Guard.
      +
    • +
    +
+
+
+
+
+
    • JDK 5.0, update 12 or higher.Java 6 is not supported, because of incompatibilities with @Override.
    • +
    +
+
+
+
+
+
    • flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl. +
    • +
    +
+
+
+
+
+
$ sudo apt-get install +git-core gnupg +sun-java5-jdk +flex bison gperf libsdl-dev libesd0-dev +libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
+
+
+
  • You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc. + +
  • +
+
+
+
+
+
$ sudo apt-get install valgrind
+
+
+
  • Intrepid ( + +8.10) users may need a newer version of libreadline:
  • +
+
$ sudo apt-get install lib32readline5-dev
+
+

+Ubuntu Linux (64-bit x86)

+This has not been as well tested. Please send success or failure reports to android-porting@googlegroups.com +.
+

+
The Android build requires a 32-bit build environment as well as some other tools:
+
  • Required Packages:
  • +
    • Git, JDK, flex, and the other packages as listed above in the i386 instructions:
      +
    • +
    • JDK 5.0, update 12 or higher.Java 6 is not supported, because of incompatibilities with @Override.
    • +
    • Pieces from the 32-bit cross-building environment
    • +
    • X11 development
    • +
    +
+
+
+
+
+
$ +sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl +sun-java5-jdk zlib1g-dev + +gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
+
  • Set the system to use the right version of java by default:

    $sudo update-java-alternatives -sjava-1.5.0-sun
  • +
+
  • X11: Ubuntu doesn't have packages for the X11 libraries, but that can be worked around with the following command:

    $ sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so

  • +
+

+Running Linux in a virtual machine

+If you are running Linux in a virtual machine, you will need at least 1.5GB of RAM and 10GB or more of disk space in order to build the Android tree.

+Other Linux

+

There's no reason why Android cannot be built on non-Ubuntu systems. Please send any success or failure reports to android-porting@googlegroups.com +. In general you will need: +

+ +

Anything missing from this list? Please let us know!

+

+
+

+
+

+Mac OS

+
+

Requirements: +

+
  • To build the Android files in a Mac OS environment, you need an Intel/x86 machine running MacOS 10.4 ("Tiger") or 10.5 ("Leopard"). At the moment MacOS 10.6 ("Snow Leopard") is not supported. The Android build system and tools do not support the obsolete PowerPC architecture. +
  • +
  • Android must be built on a case-sensitive file system.
    +
  • +
    • We recommend that you build Android on a partition that has been formatted with the "Case-sensitive Journaled HFS+" file system:
    • +
      • A case-sensitive file system is required because the sources contain files that differ only in case.
      • +
      • Journaled systems are more robust. (This is optional, but recommended.)
      • +
      • HFS+ is required to successfully build Mac OS applications such as the Android Emulator for OS X.
      • +
      +
    • If you want to avoid partitioning/formatting your hard drive, you can use a case-sensitive disk image instead.
    • +
      • To create the image:
        • launch /Applications/Utilities/Disk Utility
        • +
        • select "New Image"
        • +
        • size: 8 GB (this will work, but you can choose more if you want to)
        • +
        • volume format: case sensitive, journaled
        • +
        +
      • +
      • This will create a .dmg file which, once mounted, acts as a drive with the required formatting for Android development. For a disk image named "android.dmg" stored in your home directory, you can add the following to your ~/.bash_profile to mount the image when you execute "mountAndroid":

        # command to mount the android file image
        function mountAndroid{ hdiutil attach ~/android.dmg-mountpoint /Volumes/android; }
        +
        Once mounted, you'll do all your work in the "android" volume. You can eject it (unmount it) just like you would with an external drive.
      • +
      +
    +
+
    +To set up your Mac OS development environment, follow these steps:
    1. Install the XCode version 2.4 or later from http://developer.apple.com. We recommend version 3.0 or newer.
    2. +
    3. Install MacPorts. To do this:
    4. +
      1. Download the tar file from http://www.macports.org/ and untar the files.
      2. +
      3. Run the following:
        $ ./configure
        +$ +make
        +$ +sudo make install +
      4. +
      5. Make sure that /opt/local/bin is in your path before /usr/bin. by running
        $ echo $PATH
        If you don't see /opt/local/bin, edit $HOME/.bash_profile and add the line
        export PATH=/opt/local/bin:$PATH
        (or the equivalent for other shells) after any other PATH-related lines.To verify that your path is now correct, o +pen a new terminal and run +echo $PATH again +.
      6. +
      7. Ask MacPorts to update itself:
        +$ +sudo port selfupdate +
      8. +
      +
    5. Get the following packages from port:
      $POSIXLY_CORRECT=1 +sudo port install gmake libsdl git-core gnupg
      If using Mac OS 10.4, also install:
      $POSIXLY_CORRECT=1 +sudo port install bison
      +
    6. +
    7. Upgrade GNU make to 3.81 or later by running.Mac OS doesn't come with a recent enough version.
      $ sudo ln -s gmake /opt/local/bin/make
    8. +
    9. Set an appropriate per-process file descriptor limit. To do this, add the following lines to your .bash_profile + +file:
      # set the number of open files to be 1024
      ulimit -S -n 1024
    10. +
    +
    +
    +
    +

    +

    +Installing Repo

    +

    Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see Using Repo and Git +.

    +To install, initialize, and configure Repo, follow these steps:

    +
    1. Make sure you have a~/bindirectory in your home directory, and check to be sure that this bin directory is in your path: +
      $ cd~
      $ mkdir bin
      $ echo $PATH
      +
      +
    2. +
    3. Download thereposcript and make sure it is executable: +
      $ curl http://android.git.kernel.org/repo~/bin/repo
      $ chmod a+x ~/bin/repo
      +
    4. +
    +
    +


    +

    +Initializing a Repo client

    +
    +
    1. Create an empty directory to hold your working files: +
      +$ mkdir mydroid +
      $ cd mydroid +
    2. +
    3. Runrepo initto bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest: +
      $ repo init +-u git://android.git.kernel.org/platform/manifest.git
    4. +
      • If you would like to check out a branch other than "master", specify it with -b, like: +
        $ repo init +-u git://android.git.kernel.org/platform/manifest.git -b cupcake
      • +
      +
    5. When prompted, configure Repo with your real name and email address. If you plan to submit code, use an email address that is associated with a Google account +. +
    6. +
    +A successful initialization will end with a message such as +
    repo +initialized in /mydroid
    +

    Your client directory should now contain a.repodirectory where files such as the manifest will be kept.
    +

    +What will my name and email be used for? +
    +
    To use the Gerrit code-review tool,
    +you will need an email address that is connected with a registered Google account +(which does not have to be a Gmail address). Make sure this is +a live address +at which you can receive messages +. +The real name that you provide here will show up in attributions for your code submissions. +
    +
    +

    What is a manifest file? +

    +

    The Android source files are divided among a number of different repositories. +A manifest +file contains a mapping of where the files from these repositories will be placed within your working directory w +hen you synchronize your files.
    +

    +


    +

    +
    +

    +Getting the files

    +
    To pull down files to your working directory from the repositories as specified in the default manifest, run +

    $ repo sync
    +
    For more aboutrepo syncand other Repo commands, see +Using Repo and Git +. +

    The Android source files will be located in your working directory under their project +names. +
    +
    +

    +

    +

    +Verifying Git Tags

    +Load the following public key into your GnuPG key database.The key is used to sign annotated tags that represent releases. +

    +$ gpg --import

    +then paste the key(s) below, and press Control-D to end the input and process the keys. +After importing the keys, you can verify any tag with

    +$ git tag -v tagname + +

    key 9AB10E78: "The Android Open Source Projectinitial-contribution@android.com" + +
    +
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2.2 (GNU/Linux)

    mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
    lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
    8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
    u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
    wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
    /HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
    jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
    MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
    b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
    aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
    cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
    gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
    2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
    QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
    hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
    C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
    LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
    OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
    pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
    KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
    N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
    vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
    G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
    hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
    EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
    =Wi5D
    -----END PGP PUBLIC KEY BLOCK-----
    +

    +Building the code

    +To build the files, runmakefrom within your working directory: +
    $ cd ~/mydroid +
    $ make
    +
    +

    If your build fails, complaining about a missing "run-java-tool", try setting the ANDROID_JAVA_HOME env var to $JAVA_HOME before making.E.g.,

    +

    $ export ANDROID_JAVA_HOME=$JAVA_HOME

    +

    +Using an IDE

    + +

    +Troubleshooting

    +

    ImportError: No module na +med + +readline + +
    +
    +

    +

    Mac users getting this should install Python 2.5.2. +

    +

    Linux users that installed Python from source, make sure the dependencies for libreadline are installed, and rebuild Python. +

    +

    +What's next?

    +
    +To learn about reporting an issue and searching previously reported issues, +see +Report bugs +. +For information about editing the files and uploading changes to the code-review server, see Contribute +. +
    +
    +
    +
    diff --git a/pdk/docs/source/git-repo.jd b/pdk/docs/source/git-repo.jd new file mode 100644 index 000000000..cc996260d --- /dev/null +++ b/pdk/docs/source/git-repo.jd @@ -0,0 +1,374 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

    Using Repo and Git +

    +
    +

    To work with the Android code, you will need to use both Git and Repo.

    +
    • Git +is an open-source version-control system designed to handle very large projects that are distributed over multiple repositories. In the context of Android, we use Git for local operations such as local branching, commits, diffs, and edits.

    • +
    • Repo +is a tool that we built on top of Git. Repo helps us manage the many Git repositories, does the uploads to ourrevision control system +, and automates parts of the Android development workflow. Repo is not meant to replace Git, only to make it easier to work with Git in the context of Android. The repocommand is an executable Python script that you can put anywhere in your path.

      +In working with the Android source files, you will use Repo for across-network operations. For example, with a single Repo command you can download files from multiple repositories into your local working directory. +
    • +
    +

    +About Git +

    +

    +Why Git? +

    +One of the challenges in setting up the Android project was figuring out how to best support the outside community--from the hobbiest community to large OEMs building mass-market consumer devices. We wanted components to be replaceable, and we wanted interesting components to be able to grow a life of their own outside of Android. We first chose a distributed revision control system, then further narrowed it down to Git.

    +Already a Git user? +

    +In most situations, you can use Git instead of Repo, or mix Repo and Git commands to form complex commands. Using Repo for basic across-network operations will make your work much simpler, however. For more information about Git, see the list of resources on ourDocumentation +page.
    +

    +Task reference

    +The task list below shows a summary of how to do common Repo and Git tasks. For complete quick-start information and examples, seeGet source +. +

    +Installing Repo

    +$ curl http://android.git.kernel.org/repo ~/bin/repo
    $ chmod a+x ~/bin/repo
    +$ mkdirworking-directory-name +
    $ cdworking-directory-name
    +$ repo init-u git://android.git.kernel.org/platform/manifest.git

    +Synchronizing your client +

    +To synchronize the files for all availableprojects +:
    $ repo sync

    To synchronize the files for selected projects:
    $ repo syncproject1 project2 ... +
    +

    +Why use topic branches? +

    +Start a topic branch in your local work environment whenever you begin a change, for example when you begin work on a bug or new feature.

    A topic branch is not a copy of the original files; it is a pointer to a particular commit. This makes creating local branches and switching among them a light-weight operation. By using branches, you canisolateone aspect of your work from the others. For an interesting article about using topic branches, seeSeparating topic branches +. +
    +
    +

    +Creating topic branches +

    +To start a topic branch using Repo:
    $ repo startbranchname +

    To verify that your new branch was created:
    $ repo status

    +Using topic branches +

    +To assign the branch to a particular project:
    $ repo startbranch +name project +

    To switch back and forth among branches that you have created in your local work environment:
    $ git checkoutbranchname +

    To see a list of existing branches:
    $ git branch
    or...
    $ repo branches

    The name of the current branch will be preceded by an asterisk.

    +
    Note: +
    +A bug might be causing repo sync to reset the local topic branch. If git branch shows * (no branch) after you run repo sync, then run git checkoutagain.
    +

    +Viewing client status +

    +To list the state of your files:
    $ repo status

    To see uncommitted edits:
    $ repo diff

    Therepo diffcommand shows every local edit that you have made that wouldnot +go into the commit, if you were to commit right now.

    To see every edit that would go into the commit if you were to commit right now, you need a Git command, git diff. Before running it, be sure you are down in the project directory:
    $ cd ~/workingdirectory +/project +
    $ git diff --cached

    +Recovering sync conflicts +

    +If a repo sync shows sync conflicts:
    1. View the files that are unmerged (status code = U). +
    2. +
    3. Edit the conflict regions as necessary. +
    4. +
    5. Change into the relevant project directory, run git add and git commit for the files in question, and then "rebase" the changes. For example:
      $ cd bionic
      $ git add bionic/*
      $ git commit
      $ git rebase --continue

    6. +
    7. When the rebase is complete start the entire sync again:
      $ repo syncbionicproj2 +proj3 +... + +projN +
    8. +
    +

    +Cleaning up your client files

    +To update your local working directory after changes are merged in Gerrit:
    $repo sync

    To safely remove stale topic branches:
    $ repo prune

    +Deleting a client +

    +Deleting a client willpermanently delete +any changes you have not yet uploaded for review.Becauseall state information is stored in your client, you only need to delete the directory from your filesystem:

    $ cd~ +
    $ rm -rfworking-directory-name +

    +Scripting common tasks +

    +You can use Repo to run the same program across all projects:

    $ repo forall[proj1 +proj2 +... + +projN +]-c 'echo $REPO_PROJECT $@ +'[arg1 +arg2 +... + +argN +]

    The -c argument is evaluated through /bin/sh and any arguments after it are passed through as shell positional parameters.

    +Repo command reference +

    +Repo usage takes the following form:
    repocommand options +

    Optional elements are shown in brackets[ ]. Once Repo is installed, you can get information about any command by running
    repo helpcommand +

    +init +

    +repo init -uurl +[options +]

    Installs Repo in the current directory. This creates a .repo/ directory that contains Git repositories for the Repo source code and the standard Android manifest files. The .repo/ directory also containsmanifest.xml, which is a symlink to the selected manifest in the .repo/manifests/ directory.

    The -u argument specifies a URL from which to retrieve a manifest repository. For example:
    $ repo init -u git://android.git.kernel.org/platform/manifest.git

    To select a manifest file within the repository, use the -m option. (If no manifest name is selected, the default is default.xml.)For example:
    $ repo init -ugit://android.git.kernel.org/platform/manifest.git-m dalkvik-plus.xml

    To specify a revision, that is, a particular manifest-branch, use the -b option. For example:
    $ repo init -ugit://android.git.kernel.org/platform/manifest.git-b release-1.0

    To see other repo init options, run
    $ repo help init

    Note: +For all remaining Repo commands, the current working directory must either be the parent directory of .repo/ or a subdirectory of the parent directory.

    +

    +sync +

    +repo sync [project-list +]

    Downloads new changes and updates the working files in your local environment. After a successful repo sync, the code in specified projects will be up to date with the code in the remote repository.

    You can specify project-list as a list of names or a list of paths to local source directories for the projects:
    repo sync [proj1 +proj2 +... + +projN +]

    If you run repo sync without any arguments, it will synchronize the files for all the projects.

    +

    How Repo synchronization works +

    +
    When you run repo sync, this is what happens:
    +
    1. If the project has never been synchronized, then repo sync is equivalent to git clone. All branches in the remote repository are copied to the local project directory. +
    2. +
    3. If the project has already been synchronized once, then repo sync is equivalent to:
      git remote update
      git rebase origin/branch +
      wherebranch +is the currently checked-out branch in the local project directory. If the local branch is not tracking a branch in the remote repository, then no synchronization will occur for the project.

      If the git rebase operation results in merge conflicts, you will need to use the normal Git commands (for example, git rebase --continue) to resolve the conflicts.
    4. +
    +
    The repo sync command also updates the private repositories in the .repo/ directory.
    +

    +upload +

    +repo upload [project-list +]

    For the specified projects, Repo compares the local branches to the remote branches updated during the last repo sync. Repo will prompt you to select one or more of the branches that have not yet been uploaded for review.

    After you select one or more branches, all commits on the selected branches are transmitted to Gerrit over an SSH connection.You will need to configure an SSH key to enable upload authorization.VisitSSH Keys +within the user settings panel to register your public keys with Gerrit.To enable password-less uploads, consider using ssh-agent on your client system.

    When Gerrit receives the object data over its SSH server, it will turn each commit into a change so that reviewers can comment on each commit individually.

    To combine several "checkpoint" commits together into a single commit, use git rebase -i before you run repo upload.

    You can specify project-list as a list of names or a list of paths to local source directories for the projects:
    repo upload [proj1 +proj2 +... + +projN +]

    If you run repo upload without any arguments, it will search all the projects for changes to upload.

    To make edits to changes after they have been uploaded, you should use a tool likegit rebase -ior git commit --amend to update your local commits.

    After your edits are complete:
    +
    1. Make sure the updated branch is the currently checked out branch. +
    2. +
    3. Use repo upload --replaceproj1 +to open the change matching editor. +
    4. +
    5. For each commit in the series, enter the Gerrit change Id inside the brackets:
    6. +
    +
    +
    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacments
    [ 3022 ] c99883fe Teach 'repo upload --replace' how to add replacement patch se...
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.

    After the upload is complete the changes will have an additional Patch Set (e.g. Patch Set 2, Patch Set 3, ...).
    +

    +diff +

    +repo diff [project-list +]

    Shows changes between commit and working tree.

    You can specify project-list as a list of names or a list of paths to local source directories for the projects:
    repo diff [proj1 +proj2 +... + +projN +]

    Options:
    -h, --helpmeans show this help message and exit.
    +

    +download

    +repo downloadtarget +change +

    Downloads the specified change into the specified local directory. (Added to Repo as of version 1.0.4.)

    For example, to downloadchange 1241 +into your platform/frameworks/base directory:
    $ repo download platform/frameworks/base 1241

    A"repo sync"should effectively remove any commits retrieved via "repo download".Or, you can check out the remote branch; e.g., "git checkout m/master".

    Note: +As of Jan. 26, 2009, there is a mirroring lag of approximately 5 minutes between when a change is visible on the web inGerrit +and when repo download will be able to find it, because changes are actually downloaded off the git://android.git.kernel.org/ mirror farm. There will always be a slight mirroring lag as Gerrit pushes newly uploaded changes out to the mirror farm. +
    +

    +forall +

    +repo forall [project-list +] -ccommand +[arg. +..]

    Runs a shell command in each project.

    You can specify project-list as a list of names or a list of paths to local source directories for the projects
    +

    +help +

    +repo help [command +]

    Displays detailed help about a command.
    +

    +prune

    +repo prune [project-list +]

    Prunes (deletes) topics that are already merged.

    You can specify project-list as a list of names or a list of paths to local source directories for the projects:
    repo prune [proj1 +proj2 +... + +projN +]
    +

    +start +

    +repo startnewbranchname +[project-list +]

    Starts a new branch for development.

    Thenewbranchname +argument should provide a short description of the change you are trying to make to the projects.If you don't know, consider using the name default.

    Theproject-list +specifies which projects will participate in this topic branch. You can specify project-list as a list of names or a list of paths to local working directories for the projects:
    repo start default [proj1 +proj2 +... + +projN +]

    "." is a useful shorthand for the project in the current working directory.
    +

    +status +

    +repo status [project-list +]

    Shows the status of the current working directory. You can specify project-list as a list of names or a list of paths to local source directories for the projects:
    repo status [proj1 +proj2 +... + +projN +]

    To see the status for only the current branch, run
    repo status .

    The status information will be listed by project. For each file in the project, a two-letter code is used:
    +
    • In the left-most column, an uppercase letter indicates what is happening in the index (the staged files) when compared to the last committed state.

    • +
    • In the next column, a lowercase letter indicates what is happening in the working directory when compared to the index (what is staged). +
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Character +Meaning +
    A +The file is added (brand new). Can only appear in the first column.
    M or m
    The file already exists but has been modified in some way. +
    D or d
    The file has been deleted.
    R +The file has been renamed. Can only appear in the first column. The new name is also shown on the line.
    C +The file has been copied from another file. Can only appear in the first column. The source is also shown. +
    T +Only the file's mode (executable or not) has been changed. Can only appear in the first column. +
    U +The file has merge conflicts and is still unmerged. Can only appear in the first column. +
    - +The file state is unmodified. A hyphen inboth +columns means this is a new file, unknown to Git. After you run git add on this file, repo status will show A-, indicating the file has been added.
    +
    For example, if you edit the file main.py within the appeng project without staging the changes, then repo status might show

    project appeng/
    -mmain.py

    If you go on to stage the changes to main.py by running git add, then repo status might show

    project appeng/
    M- main.py

    If you then make further edits to the already-staged main.py and make edits to another file within the project, app.yaml, then repo status might show

    project appeng/
    -mapp.yaml
    Mm main.py

    +

    +Git and Repo cheatsheet +

    +Click on the cheatsheet to open it in a new window for easier printing. + +
    +
    +

    +Terminology +

    +Staged +changes +
    Changes marked by git add for inclusion in the next commit's snapshot.

    Commit
    +At intervals, you use git commit to save a snapshot of the staged files and a log message that describes the change.

    Manifest +
    A manifest file that contains a list of repositories and a mapping of where the files from these repositories will be located within your working directory. When you synchronize your files, the files contained in the repositories that are listed in the manifest will be pulled into your working directory.
    +
    +
    diff --git a/pdk/docs/source/index.jd b/pdk/docs/source/index.jd new file mode 100644 index 000000000..6c27bdbf9 --- /dev/null +++ b/pdk/docs/source/index.jd @@ -0,0 +1,33 @@ +page.title=Get Involved +doc.type=source +@jd:body +
    +

    Thanks for your interest in Android! Here are some ways you can get involved +and help us improve Android. For background on the Android project and our +goals, check out Our +Philosophy.

    + +

    Report Bugs

    +

    One of the easiest and most effective ways you can help improve Android is +to file bugs. For more information, visit the Reporting Bugs page.

    +

    Please note that we can't guarantee that any particular bug can be fixed in +any particular release. To see what happens to your bug once you report it, +read Life of a Bug.

    + +

    Develop Apps

    +

    We created Android so that all developers can distribute their applications +to users on an open platform. One of the best ways you can help Android is to +write cool apps that users love!

    +

    To get started, visit our sister site, developer.android.com.

    + +

    Contribute to the Code

    +

    Code is King. We'd love to review any changes you submit, so please check +out the source, pick a bug or feature, and get coding.

    +

    You can get started with by learning about the Life of a Patch, and by +learning about git, repo, and other tools using the +links to the left. If you need help along the way, you can join our discussion groups.

    +
    diff --git a/pdk/docs/source/licenses.jd b/pdk/docs/source/licenses.jd new file mode 100644 index 000000000..f1f646b95 --- /dev/null +++ b/pdk/docs/source/licenses.jd @@ -0,0 +1,87 @@ +page.title=Licenses +doc.type=source +@jd:body +
    +

    The Android Open Source Project uses a few open source initiative approved open +source licenses to enable availability of source code and to accept +contributions from individuals and corporations.

    +

    Android Open Source Project license

    +

    The preferred license for the Android Open Source Project is Apache 2.0. Apache 2.0 +is a commercial and open source friendly open source license. The majority of +the Android platform is licensed under theApache 2.0 license. While the +project will strive to adhere to the preferred license, there may be +exceptions which will be handled on a case-by-case basis. For example, the +Linux kernel patches are under the GPLv2 license with system exceptions, which +can be found on kernel.org. +

    +

    Contributor License Grants

    +

    All individual contributors (that is, contributors making contributions +only on their own behalf) of ideas, code, or documentation to the Android Open +Source Project will be required to complete, sign, and submit an Individual +Contributor License Grant. The grant can be executed online through the code review +tool. The agreement clearly defines the terms under which intellectual +property has been contributed to the Android Open Source Project.This license +is for your protection as a contributor as well as the protection of the +project; it does not change your rights to use your own contributions for any +other purpose.

    +

    For a corporation (or other entity) that has assigned employees to +work on the Android Open Source Project, a Corporate +Contributor License Grant is available. This version of the Grant allows a +corporation to authorize contributions submitted by its designated employees +and to grant copyright and patent licenses. Note that a Corporate Contributor +License Grant does not remove the need for any developer to sign their own +Individual Contributor License Grant as an individual, to cover any of their +contributions which are not owned by the corporation signing the +Corporate Contributor License Grant. +

    +

    Please note that we based our grants on the ones that the Apache Software Foundation uses, which can +be found on the Apache web site.

    +

    Why Apache Software License?

    +

    We are sometimes asked why Apache Software License 2.0 is the preferred +license for Android. For userspace (that is, non-kernel) software, we do in +fact prefer ASL2.0 (and similar licenses like BSD, MIT, etc.) over other +licenses such as LGPL.

    +

    Android is about freedom and choice. The purpose of Android is promote +openness in the mobile world, but we don't believe it's possible to predict or +dictate all the uses to which people will want to put our software. So, while +we encourage everyone to make devices that are open and modifiable, we don't +believe it is our place to force them to do so. Using LGPL libraries would +often force them to do so.

    +

    Here are some of our specific concerns:

    +
      +
    1. LGPL (in simplified terms) requires either: shipping of source to the +application; a written offer for source; or linking the LGPL-ed library +dynamically and allowing users to manually upgrade or replace the library. +Since Android software is typically shipped in the form of a static system +image, complying with these requirements ends up restricting OEMs' designs. +(For instance, it's difficult for a user to replace a library on read-only +flash storage.)
    2. +
    3. LGPL requires allowance of customer modification and reverse +engineering for debugging those modifications. Most app producers do +want to have to be bound by these terms, and the more userspace libs +that are LGPL, the more they would have to be to use Android +userspace.
    4. +
    5. Historically, LGPL libraries have been the source of a large number +of compliance problems for downstream device makers and application +developers (due to ignorance and disbelief, usually). Education is +slow going, sadly. Part of android being successful as a platform is +that we want to make it easy for our device makers to comply with the +licenses in Android. Given the difficulties with complying with LGPL +in the past, it is easiest to simply not use LGPL libraries if we can +avoid it.
    6. +
    +

    The issues discussed above are our reasons for preferring ASL2.0 for +our own code. They aren't criticisms of LGPL or other licenses. We do +feel strongly on this topic, even to the point where we've gone out of our +way to make sure as much code as possible is ASL2.0. However, we love all free +and open source licenses, and respect others' opinions and preferences. We've +simply decided that ASL2.0 is the right license for our goals.

    +
    diff --git a/pdk/docs/source/life-of-a-bug.jd b/pdk/docs/source/life-of-a-bug.jd new file mode 100644 index 000000000..1eb1bc481 --- /dev/null +++ b/pdk/docs/source/life-of-a-bug.jd @@ -0,0 +1,126 @@ +page.title=Life of a Bug +doc.type=source +@jd:body +

    The Android Open Source project maintains a public issue tracker where you +can report bugs and request features for the Android software stack. (For +details on this issue tracker, please see the Reporting Bugs page.) +Reporting bugs is great (thank you!), but what happens to a bug report once +you file it? This page describes the Life of a Bug.

    +

    Please note: the the Android Open Source Project (AOSP) issue tracker is +intended only for bugs & feature requests related to the Android software +stack. Because many users find their way here looking for the Google apps for +Android (such as Gmail and so on), we have components set up for their +convenience. However, these apps are not part of Android, and any issues +reported on these components are not guaranteed to to receive attention. +Most notably, to report issues related to Android Market, you should visit the +Android +Market Support Forum.

    +

    Here's the Life of a Bug, in a nutshell:

    +
      +
    1. A bug is filed, and has the state "New".
    2. +
    3. An AOSP contributor periodically reviews and triages bugs. Bugs are +triaged into one of four "buckets": New, Open, No-Action, or Resolved.
    4. +
    5. Each bucket includes a number of states that provide more detail on the +fate of the issue.
    6. +
    7. Bugs in the "Resolved" bucket will eventually be included in a future +release of the Android software.
    8. +
    +

    Bucket Details

    +

    Here is some additional information on each bucket, what it means, and how +it's handled.

    +

    New Issues

    +

    New issues include bug reports that are not yet being acted upon. The two +states are:

    +
      +
    • New

      The bug report has not yet been triaged (that is, reviewed by +an AOSP contributor.)

    • +
    • NeedsInfo

      The bug report has insufficient information to act +upon. The person who reported the bug needs to provide additional detail +before it can be triaged. If enough time passes and no new information is +provided, the bug may be closed by default, as one of the No-Action +states.

    • +
    + +

    Open Issues

    +

    This bucket contains bugs that need action, but which are still +unresolved, pending a change to the source code.

    +
      +
    • Unassigned

      The bug report has been recognized as an adequately +detailed report of a legitimate issue, but has not yet been assigned to an +AOSP contributor to be fixed. Typically, bugs in this state are considered low +priority, at least insofar that if they were high priority, they'd be assigned +to a contributor.

    • +
    • Reviewed

      Like Unassigned, but the issue +represented is being tracked in a separate bug database. For example, the bug +might have been reported via an AOSP member's internal bug-tracking system, +which is considered the "master" copy.

    • +
    • Assigned
    • Like Unassigned, but the bug has been +actually assigned to a specific contributor to fix.

    • +
    +

    Typically, a given bug will start in Unassigned, where it +will remain until it is associated with a specific upcoming release, at which +point it will enter Reviewed or Assigned. However, +note that this isn't a guarantee, and it's not uncommon for bugs to go from +Unassigned to one of the Resolved states.

    +

    In general, if a bug is in one of these Open states, the AOSP team has +recognized it as a legitimate issue and will fix it according to the product +priorities and milestones. However, it's impossible to guarantee a fix in time +for any particular release.

    + +

    No-Action Issues

    +

    This bucket contains bugs that have for one reason or another been +determined to not require any action.

    +
      +
    • Spam

      A kind soul sent us some delicious pork products, that we, +regrettably, do not want.

    • +
    • Question

      Someone mistook the issue tracker for a help forum. +(This is not as uncommon as one might assume: many users whose native language +isn't English can make this mistake.)

    • +
    • Unreproducible

      An AOSP contributor attempted to reproduce the +behavior described, and was unable to do so. This sometimes means that the bug +is legitimate but simply rare or difficult to reproduce, and sometimes means +that the bug was fixed in a later release.

    • +
    • WorkingAsIntended

      An AOSP contributor has determined that the +behavior described isn't a bug, but is the intended behavior. This state is +also commonly referred to as "WAI".

    • +
    • Declined

      This is like WorkingAsIntended, except +typically used for feature requests instead of bugs. That is, an AOSP +contributor has determined that the request is not going to be implemented in +Android.

    • +
    + +

    Resolved Issues

    +

    This bucket contains bugs that have had action taken, and are now +considered resolved.

    +
      +
    • FutureRelease

      This bug has been fixed (or feature implemented) in +a source tree, but has not yet been included in a formal Android +platform release. (Note that this may also include fixes that exist in a +private source tree that has not yet been contributed to a public +tree.)

    • +
    • Released

      This bug has been fixed, and is included in a formal +Android platform release. When this state is set, we try to also set a +property indicating which release it was fixed in.

    • +
    • Duplicate

      This bug is a duplicate of another, existing bug +report.

    • +
    + +

    Other Stuff

    +

    The states and lifecycle above are how we generally try to track software. +However, Android contains a lot of software and gets a correspondingly large +number of bugs. As a result, sometimes bugs don't make it through all the +states in a formal progression. We do try to keep the system up to date, but +we tend to do so in periodic "bug sweeps" where we review the database and +make updates.

    +

    Since the AOSP is essentially constantly evolving, we do make tweaks to +the list of bug states and the lifecycle described above. When we do this, +however, we'll be sure to update this page as well.

    +

    Finally, you should be aware that for a variety of reasons, there are +actually multiple issue trackers for Android-related issues. The Google Code Project +Hosting Issue Tracker is the only official public issue tracker; however, +many of the AOSP Member organizations maintain their own, as do most OEMs. We +try to keep the public issue tracker in sync with private issue trackers +wherever possible, but in cases where confidential information and security +issues are involved, this isn't always possible.

    diff --git a/pdk/docs/source/life-of-a-patch.jd b/pdk/docs/source/life-of-a-patch.jd new file mode 100644 index 000000000..e7ae936ab --- /dev/null +++ b/pdk/docs/source/life-of-a-patch.jd @@ -0,0 +1,5 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

    Workflow

    + diff --git a/pdk/docs/source/overview-1.0.jd b/pdk/docs/source/overview-1.0.jd new file mode 100644 index 000000000..cc923c649 --- /dev/null +++ b/pdk/docs/source/overview-1.0.jd @@ -0,0 +1,158 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

    Release features - Android 1.0 +

    +
    This page provides a high-level overview of Android 1.0 features. For a list of all the projects that make up the Android 1.0 source code, seeProject layout +. To see the code itself, you can either use theGitWeb +interface to view snapshots of the files, or you candownload +the source code onto your local machine.

    Applications +

    The Android platform comes with a variety of applications written using the Java programming language:
    • Home +displays applications, widgets, and shortcuts. It also supports customizable wall paper. +
    • +
    • Phone +supports regular telephony functions as well as call controls, conference calls, supplementary services, and easy integration withContacts +.
    • +
    • Web Browser +is a fully featured WebKit-based browser that supports HTML and XHTML. +
    • +
    • Email +provides access to email servers commonly found on the Internet and supports POP3, IMAP4, and SMTP. +
    • +
    • Media Player +enables managing, importing, and playing back content that has been encoded in various forms.
    • +
    • Alarm Clock, Calculator, Calendar, Camera, Contacts, IM, MMS, Settings, +Voice Dialer +, and many other applications are also included in this release.
    • +
    +Application framework +

    +
    The Android Application Framework has been designed to provide a rich set of APIs for third-party application developers. For more information, visit theAndroid SDK developer guide +.
    +
    +
    +
    Android runtime +

    +Android applications run on Dalvik, a custom virtual machine (VM) designed for embedded use. The Dalvik VM runs dex executable files, which are typically compiled from source code written in Java.

    +
    The dex executable format is designed to have these characteristics:
    • Efficient on-device storage. +
    • +
    • Efficient runtime memory usage. +
    • +
    • Ease of interpretation.
    • +
    +Dalvik has the following runtime characteristics: +
    • Efficient support for multiple concurrent VM processes, including amortized initialization and heavily shared memory. +
    • +
    • Optimized interpreter. +
    • +
    • Efficient linkage to low-level native code. +
    • +
    • A familiar and rich set of core library functionality. For a complete list of supported libraries, seehttp://developer.android.com/reference/packages.html +. +
    • +
    • Enhanced JDWP support, enabling easier debugging of multiple processes simultaneously. +
    • +
    • JNI support. +
    • +
    +Native libraries
    +
    The Android platform makes use of many native libraries, including:
    • Bionic +, a custom libc implementation optimized for embedded systems. +
    • +
    • Graphics libraries for 2D and 3D (OpenGL ES 1.0) graphics support.
    • +
    • openCore to provide the bulk of Android's multimedia capability. It includes support for network streaming (HTTP and RTSP), as well as most of the codecs and media file parsers used by the system.
    • +
    • sqlite to support having a lightweight transactional data store. +
    • +
    • WebKit library to power Android's WebKit based full web browser.
    • +
    +
    System software +
    +
    +
    About Android's operating system: +
    • Based on Linux 2.6.25 for ARM.
    • +
    • Platform currently expects ARM V5T or better architecture. Support for earlier architectures could be added, but CPUs without an MMU would be difficult to support. +
    • +
    • A set of kernel enhancements are provided to support Android. The patches include alarm, ashmem, binder, power management, low memory killer, kernel degugger, and logger.
      +
    • +
    • While the platform is designed to be chipset agnostic, and will run on virtually any ARM-based Linux kernel environment, version 1.0 of the platform has been tested and verified on the MSM 7K chipsets. +Over time we expect to see support for other major chipsets. +Kernel patches for MSM based chipsets are also available. +
    • +
    • FAT32 file system is supported. +
    • +
    • Support for TCP/IP (TCP, UDP, etc). +
    • +
    +
    +
    A minimal reference bootloader for the supported chipset is provided. It is capable of booting Linux from RAM, debugger, and NAND Flash.
    +

    About Android's support for debugging:
    • Debugging native code is supported via GDB (GNU Project Debugger) over USB. +
    • +
    • Debugging managed code is supported via any JDWP-compatible debugger over USB. +
    • +
    • Logging and crash logs supported for debugging. +
    • +
    +Supported hardware
    +
    • The platform will run on almost on any ARM based Linux kernel environment. +
    • +
    • The platform requires a minimum of 128 MB of RAM and 256 MB ofFlash memory. AnOEM may want to support more Flash memory to make it possible to download more third-party applications to user devices.
    • +
    • The platform will interface with a baseband radio stack provided externally via a Radio Interface Layer (RIL). +
    • +
    • 802.11 b/g Wi-Fi +
    • +
    • Standard USB interface, including USB 2.0 +
    • +
    • Bluetooth 2.0 EDR (Enhanced Data Rate) +
    • +
    • Camera for still and video capture +
    • +
    • Removable storage +
    • +
    +Supported display +
    • HVGA resolution
    • +
    • 16 bit color depth
    • +
    • Landscape and portrait orientation, including dynamic runtime switching +
    • +
    • Finger-based touchscreen navigation +
    • +
    +Supported keypads and buttons +
    • QWERTY +
    • +
    • 5-way navigation +
    • +
    • Hardware buttons: Send, End, Home, Back, Menu
    • +
    • Power button +
    • +
    • Volume keys (up and down) +
    • +
    • Camera trigger button, including detection for both partial press (to focus) and full press (to actually take a picture) +
    • +
    +Supported audio outputs +
    • Audio output via the headphone jack (mono and stereo) +
    • +
    • 64 kbps Bluetooth audio supported
    • +
    +Supported notifications +
    • LEDs +
    • +
    • Vibration +
    • +
    +Supported radio and telephony features
    +
    • GPRS, EDGE, UMTS, HSDPA +
    • +
    • International roaming, SMS, MMS
    • +
    • Emergency call support
    • +
    • Supplementary Services for Telephony, for example call waiting and conference calling
    • +
    • Unstructured Supplementary Service Data (USSD) +
    • +
    • Reference Radio Interface Layer (RIL) +
    • +
    +
    +
    +
    +
    diff --git a/pdk/docs/source/overview-1.5.jd b/pdk/docs/source/overview-1.5.jd new file mode 100644 index 000000000..3212f3b48 --- /dev/null +++ b/pdk/docs/source/overview-1.5.jd @@ -0,0 +1,196 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

    Release features - Android 1.5 +

    +
    Previous release highlights +:Android 1.0 +

    This page provides a high-level overview of the new features added to Android 1.5. To see the code itself, you can either use theGitWeb +interface to view snapshots of the files, or you candownload +the source code onto your local machine. You can userepo init -u +git://android.git.kernel.org/platform/manifest.git-b android-1.5 +to download the source code for Android 1.5.

    User interface refinements: +
    • System-wide: +
      • Refinement of all core UI elements +
      • +
      • Animated window transitions (off by default) +
      • +
      • Accelerometer-based application rotations +
      • +
      +
    • +
    • UI polish for: +
      • In-call experience +
      • +
      • Contacts, Call log, and Favorites +
      • +
      • SMS MMS +
      • +
      • Browser +
      • +
      • Calendar +
      • +
      • Email +
      • +
      • Camera Gallery +
      • +
      • Application management +
      • +
      +
    • +
    +

    Performance improvements:
    +
    +
    • Faster Camera start-up and image capture +
    • +
    • Much faster acquisition of GPS location (powered by SUPL AGPS) +
    • +
    • Smoother page scrolling in Browser +
    • +
    +
    Applications +
    • Camera Gallery +
    • +
      • Video recording +
      • +
      • Video playback (MPEG-4 3GP formats) +
      • +
      +
    • Browser +
    • +
      • Updated with latest Webkit browser Squirrelfish Javascript engines +
      • +
      • Copy 'n paste in browser +
      • +
      • Search within a page +
      • +
      • User-selectable text-encoding +
      • +
      • UI changes include: +
      • +
        • Unified Go and Search box +
        • +
        • Tabbed bookmarks/history/most-visited screen +
        • +
        +
      +
    • Contacts +
    • +
      • Shows user picture for Favorites +
      • +
      • Specific date/time stamp for events in call log +
      • +
      • One-touch access to a contact card from call log event +
      • +
      +
    +
    Application framework
    +

    +
    • On-screen soft keyboard +
    • +
      • Works in both portrait and landscape orientation +
      • +
      • Support for user installation of 3rd party keyboards +
      • +
      • User dictionary for custom words +
      • +
      +
    • Home screen +
    • +
      • Widgets +
      • +
        • Bundled home screen widgets include: analog clock, calendar, music player, picture frame, and search +
        • +
        +
      • Live folders +
      • +
      +
    • UI framework +
    • +
      • Framework for easier background/UI thread interaction +
      • +
      • New SlidingDrawer widget +
      • +
      • Horizontal ScrollView widget +
      • +
      +
    • Home Screen framework +
    • +
      • APIs for creating secure home screen widgets +
      • +
      • APIs for populating live folders with custom content +
      • +
      +
    • Media framework +
    • +
      • Raw audio recording and playback APIs +
      • +
      • Interactive MIDI playback engine +
      • +
      • Video recording APIs for developers (3GP format) +
      • +
      • Video and photo sharing Intents +
      • +
      • Media search Intent +
      • +
      +
    • Input Method framework +
    • +
      • Text prediction engine +
      • +
      • Ability to provide downloadable IMEs to users +
      • +
      +
    • Speech recognition framework +
    • +
      • Support for using speech recognition libraries via Intent +
      • +
      +
    • Misc API additions +
    • +
      • LocationManager - Applications can get location change updates via Intent +
      • +
      • WebView - Touch start/end/move/cancel DOM event support +
      • +
      • SensorManager - redesigned sensor APIs +
      • +
      • GLSurfaceView - convenience framework for creating OpenGL applications +
      • +
      • Broadcast Intent for app update install succeeded - for smoother app upgrade experience +
      • +
      +
    +
    +
    +

    System software +

    +
    • New Linux kernel (version 2.6.27) +
    • +
    • SD card filesystem auto-checking and repair +
    • +
    • SIM Application Toolkit 1.0 +
    • +
    +

    Supported hardware
    +
    • Bluetooth
    • +
      • Stereo Bluetooth support (A2DP and AVCRP profiles) +
      • +
      • Auto-pairing +
      • +
      • Improved handsfree experience +
      • +
      +
    +
    Developer tools +
    +
    • Support for multiple versions of Android in a single SDK installation +
    • +
    • Improved JUnit support in ADT +
    • +
    • Easier application performance profiling +
    • +
    +
    +
    +
    +
    diff --git a/pdk/docs/source/overview.jd b/pdk/docs/source/overview.jd new file mode 100644 index 000000000..0948ef204 --- /dev/null +++ b/pdk/docs/source/overview.jd @@ -0,0 +1,88 @@ +page.title=Android 1.6 Platform Overview +doc.type=source +@jd:body +

    This page provides a high-level overview of the new features added to +Android 1.6. To see the code itself, you can either use the GitWeb +interface to view snapshots of the files, or you can download +the source code onto your local machine. You can use repo init -u +git://android.git.kernel.org/platform/manifest.git -b android-1.6 +to download the source code for Android 1.6.

    +

    Information about older Android releases is also available:

    +

    User interface refinements

    +

    Quick Search Box for Android

    +

    Android 1.6 includes a redesigned search framework that provides a quick, effective, and consistent way for users to search across multiple sources—such as browser bookmarks history, contacts, and the web—directly from the home screen. +

    +


    +

    The system constantly learns which search results are more relevant based on what is clicked. So popular contacts or apps that have previously been picked will bubble up to the top when a user types the first few letters of a relevant query. +

    +


    +

    The search framework also provides developers a way to easily expose relevant content from their applications in Quick Search Box. +

    +

    Camera, Camcorder, and Gallery

    +

    An updated user interface provides an integrated camera, camcorder, and gallery experience. Users can quickly toggle between still and video capture modes. Additionally, the gallery enables users to select multiple photos for deletion.

    +


    +

    Android 1.6 also provides a much faster camera experience. Compared to the previous release, launching the camera is now 39% faster, and there is a 28% improvement in the time from completing one shot to the next. +

    +

    VPN, 802.1x

    +

    A new Virtual Private Network (VPN) control panel in Settings allows users to configure and connect to the following types of VPNs: +

    +
    • L2TP/IPSEC pre-shared key based VPN +
    • +
    • L2TP/IPsec certificate based VPN +
    • +
    • L2TP only VPN +
    • +
    • PPTP only VPN +
    • +
    +

    Battery usage indicator

    +

    A new battery usage screen lets users see which apps and services are consuming battery power. If the user determines that a particular service or application is using too much power, they can take action to save the battery by adjusting settings, stopping the application, or uninstalling the application. +

    +

    Accessibility

    +

    Users will be able to download new accessibility services built on the new accessibility framework and enable them in Settings. +

    +

    New Platform Technologies

    +

    Expanded Search Framework

    +

    The Android search framework has been redesigned and expanded to provide third-party applications the opportunity to surface content from their applications in Quick Search Box, the global search tool. To do this, developers will need to make their app "searchable" and provide suggestions in response to user queries. To enable application search suggestions, users simply select each application from which they'd like to receive suggestions, under Searchable items in the Search settings. +

    +

    Text-to-speech engine

    +

    Android 1.6 features a multi-lingual speech synthesis engine called Pico. It allows any Android application to "speak" a string of text with an accent that matches the language. The engine supports the following languages: English (American and British accents), French, Italian, German and Spanish. If you're using a T-Mobile G1 or Dream device, you'll need to download the SpeechSynthesis Data Installer from Android Market, which includes the "voices" needed by the text-to-speech engine. +

    +

    Gestures

    +

    A new gestures framework provides application developers with a framework for creating, storing, loading, and recognizing gestures and associating them with specific actions. +

    +

    Developers can use the new GestureBuilder tool included in the Android 1.6 SDK to generate libraries of gestures to include with their application. +

    +

    Accessibility

    +

    Android 1.6 provides a new accessibility framework. With this framework, developers can create accessibility plugins that respond to user input, such as making a sound when a new window is shown, vibrating when navigating to the top of a list, and providing spoken feedback. +

    +

    Expanded support for screen densities and resolutions

    +

    Android 1.6 adds screen support that enables applications to be rendered properly on different display resolutions and densities. Developers can also specify the types of screens supported by their application. +

    +

    Telephony support for CDMA

    +

    Android 1.6 includes support for CDMA in the telephony stack. +

    +

    New version of OpenCore

    +

    Android 1.6 includes the updated OpenCore 2 media engine, which has: +

    +
    • Support for OpenMAX encoders +
    • +
    • Support for additional audio codecs in AuthorEngine +
    • +
    • Improved buffering model supports shared buffers allocated in the decoder +
    • +
    +

    2.6.29 Linux kernel

    +

    Android 1.6 upgrades the Linux kernel from 2.6.27 to 2.6.29. +

    +

    New Framework APIs

    +

    For a detailed overview of new APIs, see the Version +Notes. For a complete report of all API changes, see the API +Differences Report.

    diff --git a/pdk/docs/source/report-bugs.jd b/pdk/docs/source/report-bugs.jd new file mode 100644 index 000000000..e89fbbe8d --- /dev/null +++ b/pdk/docs/source/report-bugs.jd @@ -0,0 +1,125 @@ +page.title=Report Bugs +doc.type=source +@jd:body +
    +

    Thanks for your interest in Android! One of the best ways you can help us +improve Android is to let us know about any problems you find with it.

    +

    First, though: if you think you've found a security vulnerability, +please don't use the forms below. (Using the public forms below may +allow anyone to see your report, which may put users at risk until the bug is +fixed.) Instead, please report security bugs to our security team by emailing +security@android.com. We believe in +responsible disclosure of security vulnerabilities, and will give you proper +attribution for any issues you report.

    +

    Here's how to report non-security bugs:

    +
      +
    1. Search for + your bug to see if anyone has already reported it.
    2. +
    3. If you find your issue and it's important to you, star it! That's how we + know which bugs are most important to fix.
    4. +
    5. If no one's reported your bug, file the bug. You can use one of these + templates:
    6. +
    +

    Please note that we can't guarantee that any particular bug can be fixed in +any particular release. To see what happens to your bug once you report it, +read Life of a Bug.

    +

    In general, please put as much info in bugs as you can. Just a one liner +telling us something isn't working is usually useless, and will probably be +closed without any action. The more detail you provide, the more likely your +issue is to be resolved. Below, there are some examples of a good bug report +and a poor bug report.

    +

    A Poor Bug Report

    +
    +Title: Error message
    +
    +When running Eclipse I get an "Internal Error" that says "See the .log file
    +for more details".
    +
    +Steps to reproduce:
    +Happens when "Object o = null". Doesn't happen when changed to "Object o".
    +
    +Expected results:
    +I wouldn't get the error message--would work with Object o = null.
    +
    +Observed results:
    +See above.
    +
    +

    A Good Bug Report

    +
    +Title: Stepping over "Object o = null" causes Eclipse "Internal Error"
    +
    +Interesting bug, while using Eclipse 3.3.1.1 with m37a of android and
    +the following code:
    +
    +package com.saville.android;
    +
    +import android.app.Activity;
    +import android.os.Bundle;
    +import android.util.Log;
    +
    +public class TestObjectNull extends Activity {
    +    /** Called when the activity is first created. */
    +    @Override
    +    public void onCreate(Bundle icicle) {
    +        super.onCreate(icicle);
    +        setContentView(R.layout.main);
    +
    +        Object o = null;
    +
    +        o = "hi";
    +
    +        Log.v(TAG, "o=" + o);
    +    }
    +
    +    static final String TAG = "TestObjectNull";
    +
    +}
    +
    +Eclipse indicates an "Internal Error" with "See the .log file for more
    +details" and then asks if I want to exit the workbench. This occurs when I
    +place a break point on "setContentView(R.layout.main);" and then single
    +step over "Object o = null;"
    +
    +If I change "Object o = null;" to "Object o" all is well.
    +
    +The last lines of the .log file are:
    +
    +!ENTRY org.eclipse.core.jobs 4 2 2008-01-01 13:04:15.825
    +!MESSAGE An internal error occurred during: "has children update".
    +!STACK 0
    +java.lang.InternalError: Invalid signature: "<null>"
    +        at
    +org.eclipse.jdi.internal.TypeImpl.signatureToTag(TypeImpl.java:307)
    +        at
    +org.eclipse.jdi.internal.LocalVariableImpl.tag(LocalVariableImpl.java:185)
    +        at
    +org.eclipse.jdi.internal.StackFrameImpl.getValues(StackFrameImpl.java:128)
    +        at
    +org.eclipse.jdi.internal.StackFrameImpl.getValue(StackFrameImpl.java:73)
    +        at
    +org.eclipse.jdt.internal.debug.core.model.JDILocalVariable.retrieveValue(JDILocalVariable.java:57)
    +        at
    +org.eclipse.jdt.internal.debug.core.model.JDIVariable.getCurrentValue(JDIVariable.java:66)
    +        at
    +org.eclipse.jdt.internal.debug.core.model.JDIVariable.getValue(JDIVariable.java:88)
    +        at
    +org.eclipse.debug.internal.ui.model.elements.VariableContentProvider.hasChildren(VariableContentProvider.java:62)
    +        at
    +org.eclipse.jdt.internal.debug.ui.variables.JavaVariableContentProvider.hasChildren(JavaVariableContentProvider.java:73)
    +        at
    +org.eclipse.debug.internal.ui.model.elements.ElementContentProvider.updateHasChildren(ElementContentProvider.java:223)
    +        at
    +org.eclipse.debug.internal.ui.model.elements.ElementContentProvider$3.run(ElementContentProvider.java:200)
    +        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
    +
    +
    diff --git a/pdk/docs/source/roles.jd b/pdk/docs/source/roles.jd new file mode 100644 index 000000000..9c64c717b --- /dev/null +++ b/pdk/docs/source/roles.jd @@ -0,0 +1,83 @@ +page.title=People and Roles +doc.type=source +@jd:body +
    +

    The Android Open Source Project (AOSP) includes individuals working in a variety +of roles. As noted in Our +Philosophy, the core AOSP members operate the Android product management +and engineering process. This page describes these roles in a bit more +detail.

    +

    Anyone who is interested in exploring and contributing to Android can use the +Android Open Source Project resources. Anyone can join the mailing lists, ask +questions, contribute patches, report bugs, look at submitted patches, and use +the tools. To get started with the Android code, see Get Involved.

    + +

    AOSP Member

    +

    "AOSP Member" is a somewhat loose term, but generally refers to +those organizations who are key contributors to Android, and who are managing +the product requirements process and core engineering. You can think of this +group as the Android "core team" responsible for Android's overall success in +the marketplace. One of the most prominent AOSP members is Google.

    +

    + +

    Contributor

    +

    A "Contributor" is anyone making contributions to the AOSP source code, +including both employees or other affiliates of an AOSP Member, as well as +external developers who are contributing to Android on their own behalf. +There is no distinction between Contributors who are affiliated with an AOSP +Member, and those who are not: all engineers use the same git/gerrit tools, +follow the same code review process, and are subject to the same requirements +on code style and so on.

    +

    + +

    Developer

    +

    A "Developer" is an engineer writing applications that run on Android +devices. There is, of course, no difference in skillset between a "Developer" +and a "Contributor"; we simply use "Developer" to help identify our audience. +Since the key purpose of Android is to cultivate an open development platform, +"Developers" are one of the key customers of the Android project. As such, we +talk about them a lot, though this isn't technically a separate role in the +AOSP per se.

    +

    + +

    Verifier

    +

    "Verifiers" are responsible for testing change requests. After individuals +have submitted a significant amount of high-quality code to the project, the +Project Leads might invite them to become Verifiers.

    Note: at this +time, generally Verifiers are the same as Approvers.

    +

    + +

    Approver

    +"Approvers" are experienced members of the project who have demonstrated their +design skills and have made significant technical contributions to the +project. In the code-review process, an Approver decides whether to include or +exclude a change. Project Leads (typically employed by an AOSP Member) choose +the Approvers, sometimes promoting to this position Verifiers who have +demonstrated their expertise within a specific project.

    +

    + +

    Project Leads

    +

    Android consists of a number of sub-projects; you can see these in the git +repository, as individual .git files. The AOSP Members generally assign tech +leads or product leads who oversee the engineering for individual Android +projects. Typically these tech leads will be employees of an AOSP Member +company. A Project Lead for an individual project is responsible for the +following:

    +
      +
    • Lead all technical aspects of the project; for example, the project + roadmap, development, release cycles, versioning, and QA.
    • +
    • Ensure that the project is QA-ed in time for scheduled Android platform + releases.
    • +
    • Designate Verifiers and Approvers for submitted patches.
    • +
    • Be fair and unbiased while reviewing changes. Accept or reject patches + based on technical merit and alignment with the Android platform.
    • +
    • Review changes in a timely manner and make best efforts to communicate + when changes are not accepted.
    • +
    • Optionally maintain a web site for the project for information and + documents specific to the project.
    • +
    • Act as a facilitator in resolving technical conflicts.
    • +
    • Be the public face for the project and the go-to person for questions + related to the project.
    • +
    +
    diff --git a/pdk/docs/source/source_toc.cs b/pdk/docs/source/source_toc.cs new file mode 100644 index 000000000..007ea64e4 --- /dev/null +++ b/pdk/docs/source/source_toc.cs @@ -0,0 +1,36 @@ + + + + + + diff --git a/pdk/docs/source/submit-patches.jd b/pdk/docs/source/submit-patches.jd new file mode 100644 index 000000000..afa6bf258 --- /dev/null +++ b/pdk/docs/source/submit-patches.jd @@ -0,0 +1,231 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

    Contribute + +

    +
    Using Repo and Git +
    + + + +
    For information about current problems and fixes, seeKnown issues +.
    +
    This page describes how to record changes to the Android files on your local client, upload those changes to the code-review server, and use Gerrit to track changes.

    +Prerequisites

    +Before you follow the instructions on this page, you will need to set up your local working environment and get the Android source files. For instructions, seeGet source +.

    Other recommended reading:
    • For an overview of the code contribution and review process, seeWorkflow +.
    • +
    • For details about Repo, seeUsing Repo and Git +.
    • +
    • For information about the different roles you can play within the Android Open Source community, seeProject roles +.
    • +
    • If you plan to contribute code to the Android platform, be sure to read aboutcontributor licenses +.
    • +
    +

    +Working with the code

    +First, download the source into your working directory, as described inGet source +.

    To work on a particular change to the code, follow these steps:
    +
    +
    +
    1. Use repo startbranchname +to start a new topic branch.
    2. +
    3. Edit the files.
    4. +
    5. Use git add to stage changes. +(Sometimes optional.) +
    6. +
    7. Use repo status and git diff to view the status of your files.
      +
    8. +
    9. Use git commit to commit changes.
    10. +
    11. Use repo upload to upload changes to the review server +.
    12. +
    +You can track your uploaded changes using the Gerrit code-review tool. When it's time to work on the code again, run repo sync, then go back to step 1 above and start another topic branch.

    The steps will not always come in the order shown--for example, you might run git diff at several points in the process.

    +Starting a topic branch

    +Start a topic branch called default in your local work environment:

    $ repo start default

    For more about topic branches, seeUsing Repo and Git +.

    +Editing the files

    +You do not need to check files out before working on them. Edit the files using vim, emacs, or any other editor.

    +Staging changes

    +To indicate that every new and modified file in your working directory should be "staged" for inclusion in the next commit, run git add without any arguments. You can also specify files or filetypes. For example, the following command would stage all the new and modified files under the bionic directory and its subdirectories:

    $ git add bionic/*

    Run git help add to see more ways to use git add.

    When is git add optional?
    +
    If you add new files, you must stage them using git add before you run git commit. However, if you are only modifying or deleting files, you can skip git add if you use the -a option with git commit. For more details, see the "Committing changes" section further down.

    +Using repo status

    +To see the status of the current branch, run

    $ repo status .

    For information about how to interpret the results of repo status, seeUsing Repo and Git +.

    +Using git diff

    +To see uncommitted changes, cd into the project directory and run

    $ git +diff

    Without any arguments, git diff will show you the differences +between the files in your working directory and the committed +files.

    +
    +
    +
    If you add the --cached option, git diff will show you the differences between the files in your working directory and the staged files.

    +

    +
    +To see every edit that would go into the commit if you were to commit right now, make sure you are in the project directory and then run

    $ git diff --cached

    +Committing changes

    +At intervals while you are working, commit your edits by using git commit from within the project directory:
    $ cd ~/mydroid/project-name + +
    $ git commit
    +

    Every file that you staged using git add will be included in this commit.

    If you have not added any new files that you want to commit, you can skip git add and simply run

    $ git commit -a

    The -a option will stage all the files you have modified or deleted and include them in this commit. (If you have added new files and want them included in the commit, you will need to use git add before you run git commit.)

    If commit +does not find changes to be committed, it will report "nothing to commit (working directory clean)". If commit finds changes to be committed, a file will open in which you can create a log message:

    Your comments about this commit go here.... +
    # Please enter the commit message for your changes. Lines starting
    # with '#' will be ignored, and an empty message aborts the commit.
    # On branch master
    # Changes to be committed:
    #(use "git reset HEADfile..." to unstage)
    #
    #new file:.repo/projects/gerrit-manifests.git/FETCH_HEAD
    #new file:.repo/projects/gerrit-manifests.git/HEAD
    #new file:.repo/projects/gerrit-manifests.git/config
    .
    .
    .
    +
    If you do not add a log message, the commit will be aborted. Add a message and save the file.

    +Committing changes during code review

    +If you previously uploaded a change to Gerrit and the Approver has asked for changes, follow these steps:
    1. Edit the files to make the changes the Approver has requested.
    2. +
    3. Recommit your edits using the --amend flag, for example:
      $ git commit -a --amend +
    4. +
    5. See below to upload the changes to Gerrit again for another review cycle.
    6. +
    +

    +Editing uploaded changes

    +To update an existing change with a new patch set:
    1. Make sure the updated branch is the currently checked out branch.
    2. +
    3. Use repo upload --replaceproj1 +to open the change matching editor.
    4. +
    5. For each commit in the series, enter the Gerrit change Id inside the brackets.
    6. +
    +For more details, seeUsing Repo and Git +.

    +Uploading changes to Gerrit

    +To upload your committed changes to the review server:
    1. Complete the appropriateContributor Agreement +in Gerrit, granting the Android Open Source Project permission to distribute your changes to others.
    2. +
    3. Select anSSH Username +and upload yourpublic SSH key +, so that Gerrit can identify you when you upload changes.Please note that due to a bug in repo, repo upload requires your SSH Username be the local part of your email address (the text on the left of the @ sign).

      These first two steps are only necessary prior to your first change.Gerrit will remember your agreement and SSH key for subsequent changes.

    4. +
    5. Update to the latest revisions:
      +$ +repo sync +

      For information about how to handle sync conflicts and how Repo synchronization works, seeUsing Repo and Git +.

    6. +
    7. Run repo upload to examine the list of all available changes and select which topic branches will be uploaded to the review server:
      $ +repo upload +

      This will open an editor window that will let you choose which topic branch to upload.If there is only one branch available, a simple y/n prompt is instead of an editor.
    8. +
    +After a change is uploaded successfully:
    • Repo will give you a URL where you can view your submission.
    • +
    • The code-review system will automatically notify the project owner about your submission.
    • +
    +For information about specifying particular projects with repo sync and repo upload, seeUsing Repo and Git +.

    +Summary example

    +Here is a simple example that shows how you might work with the bionic/Android.mk file:

    $ cd ~/mydroid/bionic
    $ repo start default
    $ vi Android.mk
    ...edit and save the file... +
    $ git commit -a
    $ repo sync
    $ repo upload
    ...close the editable window that opens... +
    ...visit the provided URL to open Gerrit and track your change... +

    +Downloading changes from Gerrit

    +To download a specific change from Gerrit, run

    $ repo downloadtarget change +

    where target is the local directory into which the change should be downloaded andchange is the change number as listed inGerrit +. For more information, seeUsing Repo and Git +.

    +Using the Gerrit code-review tool

    +You can open Gerrit by visiting whatever URL is returned to you from the repo upload command, or by visitinghttps://review.source.android.com +/.

    +Viewing the status of uploaded changes

    +To check the status of a change that you uploaded, openGerrit +, sign in, and click MyChanges.

    +

    +Reviewing a change

    +If you are assigned to be the Approver for a change, you need to determine the following:
    • Does this change fit within this project's stated purpose? (SeeProject layout +.)
    • +
    • Is this change valid within the project's existing architecture?
    • +
    • Does this change introduce design flaws that will cause problems in the future?
    • +
    • Does this change following the best practices that have been established for this project?
    • +
    • Is this change a good way to perform the described function?
    • +
    • Does this change introduce any security or instability risks?
    • +
    +If you approve of the change, you will then mark it with LGTM ("Looks Good to Me") within Gerrit.

    +Verifying a change

    +If you are assigned to be the Verifier for a change, you need to do the following:
    • Patch the change into your local client using one of the Download commands.
    • +
    • Build and test the change.
    • +
    • Within Gerrit use Publish Comments to mark the commit as "Verified", or "Fails" (and add a message explaining what problems were identified).
    • +
    +

    +Viewing diffs and comments

    +To open the details of the change within Gerrit, click on the "Id number" or "Subject" of a change. To compare the established code with the updated code, click the file name under "Side-by-side diffs."
    +

    +Adding comments

    +Anyone in the community can use Gerrit to add inline comments to code submissions. A good comment will be relevant to the line or section of code to which it is attached in Gerrit. It might be a short and constructive suggestion about how a line of code could be improved, or it might be an explanation from the author about why the code makes sense the way it is.

    To add an inline comment, double-click the relevant line of the code and write your comment in the text box that opens. When you click Save, only you can see your comment.

    To publish your comments so that others using Gerrit will be able to see them, click the Publish Comments button. Your comments will be emailed to all relevant parties for this change, including the change owner, the patch set uploader (if different from the owner), and all current reviewers.

    +After a submission is approved

    +After a submission makes it through the review and verification process, Gerrit automatically merges the change into the public repository. The change will now be visible in gitweb, and others users will be able to run repo sync to pull the update into their local client.

    +How do I become a Verifier or Approver?

    +In short, contribute high-quality code to one or more of the Android projects. For details about the different roles in the Android Open Source community and who plays them, seeProject roles +.

    +Using GitWeb to track patch histories

    +To view snapshots of the files that are in the public Android repositories and view file histories, use theAndroid instance of GitWeb +.
    +
    +
    diff --git a/pdk/docs/source/using-eclipse.jd b/pdk/docs/source/using-eclipse.jd new file mode 100644 index 000000000..961da74f2 --- /dev/null +++ b/pdk/docs/source/using-eclipse.jd @@ -0,0 +1,211 @@ +page.title=Android Compatibility - Compatibility Test Suite +doc.type=source +@jd:body +

    Using Eclipse +

    +

    About this Document +

    +

    This document will help you set up the Eclipse IDE for Android platform development. +

    + + +

    Enter eclipse +

    +

    +Basic setup +

    +

    First, it's important to make sure the regular Android development system is set up. +

    +
    cd /path/to/android/root
    make # and wait a while, if you haven't done this
    +

    Important +: You will still be using "make" to build the files you will actually run (in the emulator or on a device). You will be using Eclipse to edit files and verify that they compile, but when you want to run something you will need to make sure files are saved in Eclipse and run "make" in a shell. The Eclipse build is just for error checking. +

    +

    Eclipse needs a list of directories to search for Java files. This is called the "Java Build Path" and can be set with the .classpath file. We have a sample version to start you off. +

    +
    cd /path/to/android/root
    cp development/ide/eclipse/.classpath .
    chmod u+w .classpath # Make the copy writable
    +

    Now edit that copy of .classpath, if necessary. +

    +
    +Increase Eclipse's Memory Settings +
    +

    The Android project is large enough that Eclipse's Java VM sometimes runs out of memory while compiling it. Avoid this problem by editing the the eclipse.ini file. On Apple OSX the eclipse.ini file is located at /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini +

    +

    Memory-related defaults (as of Eclipse 3.4) +

    + +
    -Xms40m
    -Xmx256m
    -XX:MaxPermSize=256m
    +

    Recommended settings for Android development +

    +
    -Xms128m
    -Xmx512m
    -XX:MaxPermSize=256m
    +

    These settings set Eclipse's minimum Java heap size to 128MB, set the maximum Java heap size to 512MB, and keep the maximum permanent generation size at the default of 256MB. +

    +

    Now start Eclipse: +

    +
    eclipse  # or you can click some clicky thing instead, if you prefer
    +

    Now create a project for Android development: +

    +
    1. If Eclipse asks you for a workspace location, choose the default. +
    2. +
    3. If you have a "Welcome" screen, close it to reveal the Java perspective. +
    4. +
    5. File New Java Project +
    6. +
    7. Pick a project name, "android" or anything you like. +
    8. +
    9. Select "Create project from existing source", enter the path to your Android root directory, and click Finish. +
    10. +
    11. Wait while it sets up the project. (You'll see a subtle progress meter in the lower right corner.) +
    12. +
    +

    Once the project workspace is created, Eclipse should start building. In theory, it should build with no errors and you should be set to go. If necessary, uncheck and re-check Project Build Automatically to force a rebuild. +

    +

    Note: + +Eclipse sometimes likes to add an "import android.R" statement at the top of your files that use resources, especially when you ask eclipse to sort or otherwise manage imports. This will cause your make to break. Look out for these erroneous import statements and delete them. +

    +

    +When you sync +

    +

    Every time you repo sync, or otherwise change files outside of Eclipse (especially the .classpath), you need to refresh Eclipse's view of things: +

    +
    1. Window Show View Navigator +
    2. +
    3. In the "Navigator", right-click on the project ("android-java" or whatever you named it) +
    4. +
    5. Click Refresh in the context menu +
    6. +
    +

    +Adding apps to the build path +

    +

    The default .classpath includes the source to the core system and a sample set of apps, but might not include the particular app you may want to work on. To add an app, you must add the app's source directory. To do this inside Eclipse: +

    +
    1. Project Properties +
    2. +
    3. Select "Java Build Path" from the left-hand menu. +
    4. +
    5. Choose the "Source" tab. +
    6. +
    7. Click "Add Folder...". +
    8. +
    9. Add your app's "src" directory. +
    10. +
    11. Click OK. +
    12. +
    +

    When you're done, the "source folder" path in the list should look like android/packages/apps/YourAppName +/src. Depending on which app(s) you include, you may also need to include othersrc/main/java directories under android/dalvik/libcore. Do this if you find you cannot build with the default set. +

    +

    +Eclipse setup to work on developer tools +

    +

    To work on Java developer tools, the principle is the same, except you specify /path/to/tool when using the option "Create project from existing source." +

    +

    Once the project is created, you need to set up the Java Build Path: +

    +
    1. Select the project you just created. +
    2. +
    3. Project Properties +
    4. +
    5. Select "Java Build Path" from the left-hand menu. +
    6. +
    7. Choose the "Source" tab. +
    8. +
    9. Expand the singletoolname +/src entry. +
    10. +
    11. Double click the "Excluded: (none)" item. +
    12. +
    13. Add to the excluded (bottom) list: "MakeFile" and "resources/". +
    14. +
    15. Close the dialog. +
    16. +
    17. Back in the "Source" tab, click "Add Folder...", and addtoolname +/src/resources. +
    18. +
    19. Click OK. +
    20. +
    +

    +Eclipse setup to work on DDMS

    +

    For DDMS, you will need to make a project for +

    +
    1. development/tools/ddms/libs/ddmlib +
    2. +
    3. development/tools/ddms/libs/ddmuilib +
    4. +
    5. development/tools/ddms/app +
    6. +
    +

    Each project will need to reference the ones before it ("ddmuilib" references "ddmlib", and "app" references both of those). To do this: +

    +
    1. Make sure you have all 3 projects defined. +
    2. +
    3. Right click on a project, "Build Path" "Configure Build Path..." +
    4. +
    5. Choose the "Project" tab. +
    6. +
    7. Click "Add..." and check the required projects. +
    8. +
    +

    Eclipse formatting +

    +

    You can use a preference file in Eclipse to automatically set the formatter to the Android style guide.Import the files android-formatting.xml and android.importorder, which live underdevelopment/ide/eclipse. +

    +

    Debugging the emulator with Eclipse +

    +

    You can also use eclipse to debug the emulator and step through code. First, start the emulator running: +

    +
    cd /path/to/android/root
    . build/envsetup.sh
    lunch 1 # to build the emulator
    make # if you didn't already do this
    emulator # you should see a GUI picture of a phone
    +

    In another shell, start DDMS (the Dalvik debug manager): +

    +
    cd /path/to/android/root
    ddms # you should get a splufty debugging console
    +

    Now, in eclipse, you can attach to the emulator: +

    +
    1. Run Open Debug Dialog... +
    2. +
    3. Right-click "Remote Java Application", select "New". +
    4. +
    5. Pick a name, "android-debug" or anything you like. +
    6. +
    7. Set the "Project" to your project ("android-java" or whatever). +
    8. +
    9. Keep the "Host" set to "localhost", but change "Port" to 8700. +
    10. +
    11. Click the "Debug" button and you should be all set. +
    12. +
    +

    Note that port 8700 is attached to whatever process is currently selected in the DDMS console, so you need to sure that DDMS has selected the process you want to debug. +

    +

    You may need to open the Debug perspective (next to the "Java" perspective icon in the upper-right, click the small "Open Perspective" icon and select "Debug"). Once you do, you should see a list of threads; if you select one and break it (by clicking the "pause" icon), it should show the stack trace, source file, and line where execution is at. Breakpoints and whatnot should all work. +

    +

    Bonus material +

    +

    Replace Ctrl with the Apple key on Mac. +

    + +
    Ctrl-Shift-o = Organize imports
    Ctrl-Shift-t = load class by name
    Ctrl-Shift-r = load non-class resource by name
    Ctrl-1 = quick fix
    Ctrl-e = Recently viewed files
    Ctrl-space = auto complete
    Shift-Alt-r = refactor:rename
    Shift-Alt-v = refactor:move
    + +

    Useful Plugins +

    +

    Eclipse has a plugin architecture that enables third parties to extend the IDE. Here are some plugins that make Eclipse easier to use for writing Android software: +

    + +
    • AnyEdit +- automatically fix whitespace issues when saving files. Can convert tabs to spaces, strip blanks at end-of-line, and ensure the last line of the file has an end-of-line character. +
    • +
    +

    "Eclipse is not working correctly, what should I do?" +

    +

    Make sure: +

    +
    • You followed the instructions on this page precisely. +
    • +
    • Your Problems view doesn't show any errors. +
    • +
    • Your application respects the package/directory structure. +
    • +
    +

    If you're still having problems, please contact one of the Android mailing lists or IRC channels. +

    +
    diff --git a/pdk/hosting/app.yaml b/pdk/hosting/app.yaml index b36efe8a2..6758539bf 100644 --- a/pdk/hosting/app.yaml +++ b/pdk/hosting/app.yaml @@ -4,8 +4,10 @@ runtime: python api_version: 1 handlers: -- url: /online-pdk - static_dir: online-pdk - - url: / - script: pdk.py + static_files: online-pdk/index.html + upload: online-pdk/index.html + +- url: /(.*) + static_files: online-pdk/\1 + upload: online-pdk/.*

    0aJls+>;NiCc=g}p)5WVP){kpKfo*IG0lh&OKbTrH~ z+0`Gg3eIYCs9CjQt1SwMTqqY$_918l@UC1`A9deibrRpiZbr<{pTX5K>{w*SHFdkS zUt7H=X5-io*ZpxF>UMDDnO}sTFu`#itPR6192R@O^zyHcL9eZgQD?c;K`M`PG!z=o z+)|eQZo9;vV;>o`WW+c(qu;Q^$b|!^36=RQGY~s}kHia%YiW;C-~&%8zaw!yZ#~Eo zS(U;nD@9_(uIwUCxKr{q+f%U2;plxF7l6~tPLMh;kESx6z~G-O&KtbCHC)y6{%}Wy zy!>P!3~`(LtLcQ7GV#>nPo6y1LQV?b1#Pt($Aj!8x%O%fLuYfluys|R47?g;77L5& z@QSt`AmJ~BL&D#EReK+hA(d1ynAZ3so9N|9HikGham=1hJzfL2BGvb#(yqN`8?ZyQs8m53M^7T4YZG$`^BL0L*|Acz15yY*v2VEdu-pMqQ48A8u48R7ZEdZV0 zY9pSR#+joknx{(si{zz}G6JL5K{o+mC(^{Rx4iGIJAnNBp7V8-bxZtDsqk}`sUUs` zTapiIh$n^ZdJP1f41WTX(9V~-sNeeN7ei+lv6QhqPVpQrO?K!badB0q*u=|*68i3G zNg}HS+vP{27xcH7&m(T(j_4?(KLpsaOY4e7!dasCLs1c#I}e^b5ptCt!@`~jW{X-l?|LI~ zU(kgkiBv;`%sh-FdvwbdQh)Wap)6nCED!#6uGw8H6-+FTJ=4D-fYp%`5mo#>OZ}ET zc-T6iOTYSLLws%Pk(YE6R-N~0p3#%~7b;>+xk`<51AMpU;vN-iG|^xrXZw@6oSQU> z@Q32Sfw{Et0my^S{H!)?1Jqesh=zBaz5&o?hjkeLTTX9ty0@F0`22ceEv9IFRI44L zcmAc}`|9jIv%LV*J7M3E8;CJl;|P_g48hW3IAMYWt_;C3%~U3+=w1Qya{ z44bOget0!b<{M$t(S6g?c?N#v>EMrqUAraQECcPQ(;CRM!AA{S0MFbdq^8Wuu`PhR z%pVv}_<}zfLAnvANb1=)^1K8TO%(YYLGq;{-F<^aNko(_)HH4-+mZ0gp}nR`E*D-@ z3S?k#Ly6apJVM47uyR99jm3<)^yk@Brh6qTf7!NnasGKd34I8sT{GQuKC;Zz5+H-#k6|nO@fyrvC%ac3E6~T zPA=)g)guZEs6a)r{Y6&ckFhhTrrROVbQ~16j^oI!DJb|#LElxMoqCgbPN}9Eqp(BE zK33vA5G-tz4`1uf*64H$kg=Zi0fd-z_qUn>VFOruKdHDytZT}V%+h#MoVcuzKMB;M zA`>i;#=k3+r>pt#Mf22S^Iyc9SXqn?WUFd97p9y5D;(g3xPMr@(q&0M02S~#uk@4f z+MHJ$ppSoKybk@$_3>sO5fd)VCt{bWZWvZ5L9FinjHw9Q7fUhfpZPgndAMQoGx*XJ^EM~g&cq#76AVNL91(**SnrYwx z#ow0zN9Zr)p6q!zv*&?*-TbfOiy4+*l$Tn$(_rL7(%&g8myTR(FBL0(tu4Vf;F;Be53Y|2hi4k7X=9HWcW^{dI^6fSqz zS}gGRGF9S%hFnBrHHp#;`5RY17f#)b7pcE(jr+t-YPXq%<`O163s6XFnwrpFSXJ@i z(+_tx#4MA(%u7PA-BTznX)0kv;Y2}CM>qelwg@h=*;LG|Y39uQZiDtSA;;{GL_2|0 z{@?x2B}lryfBACS#>>NCj_n*j@STj+!-=*5gbF0mFhf0Iqf$M~P7SUROF{Y%SI+fw zsRHzNz7f+1hQ5+}8c0KXvT#+FQ;b%x3Kmt2m$)s8Ct2h(;v`aeo{*i8)d^pRR;2YQ zyn!_3Mbrr8#nO0lHqTP&GBQmZc_mUn6Gq%9{YKqjocT`tRX0A(J+%9ASWM|_)jy)L z+lgLe+3687+qIY;xjDfTCVB5o0I@AiN?f3cG!aH=Y}j-KL#xg_`XDBgKT8~&w4_^( zX|(H&NW{pf>X$3GDuLpJm%2i4tOFF4@VaeAa!>Y06Vq1W^>Vdw(ZDZMz)Zp4$7v7R z+Mh_Urpb4tI5@06$5iXuNFcIB_Hi5bEav3a*tM(+gw=vDta*ZL7xVi_j48hrU$M6^ zKx6ec%DI|TsjO&!&(m3yrCEUce5&v2a7g}3`qv^S1(n2w`O?V>4X=a`ejW8A840)d zdI>nC1)d0klYxx~MzDE0gcd`GVRg0L(8x-ced2of611~V(wC%*t~}>Nx=XS5<|rlcXo3uC-OSE{Gg=!wD|&<4 z#XZ>n_7+&Q@a_l+Q=qZAilWIYm&$8#}?#svJ%1CFZ#|9b!9~{l7&Eh;2hWYRT zZ=ywYd~+B}I`6ov{OBvUosIt8d@Ey}pUNu669y0Q)0`&EW-UCIKF+STDfTw(e3?kQ zD`+kcw=eMCScdKriaD5KL8sU+Ot-32o(#6TcPmBRV+T)~s|<{G*|^@Cl*DlwT#f7T z>=^{ol8@uyiRYSx?L2QqtccdBGJtW|^pv0BwVs$+vZJ|wb$y5N-|CexyFDblnj$pl zY%GhH-c0AGY*Y}zg94GNU~r&FX9iMR$|t~<#Cd394~2@9l4 z#uP4U6^<-d$qg0rb)X4|-h6_6{Cg38-Os-Ae2<-(qK<%G94)-2@6$|(b8kQ!{5mAs zyhGPGpoBE1*PxJZTksy4&APSWzSX0KW;I%pvq!ut!p`GX8H8X_3Rm15ki zOVda|0m*xO)@0|swQyCrGM@1Xv4JgGV2 zU?N8bjQ=Yoh!yupe2ukXaEbZnVt}BmsuY=Na}<-;B*P%cIi}hoIxirm4u*ViXoL); zNG9nFHlN!*9r~hbDlkloolL3IN!3i`WH+p-v3!P#UmTu{!v7_+8R=clBv(l`9wmGv zqP^SmKpqq}atO-rtyFwz@#hUdLVQt+6Q%hAmVupCyRd06%tF0_H*)p46D&E)J# zXFsN`lf~`*>LMfW!MF#NhP_$sQ1`2X)EjBATB;;-_~zsG{i@1E==lAw%~IU- z{I$_u;r0FT`u_U;|JUZI-}U^!*mvsq{rLU<NbFXQLd z$Iq?y_wkObGMT7p^ZWjpxi#$XAZHL2iJYrQ>N**|qv1=TXnmz~Me|t=8($8; z6+m3FS$%YoB2KjFYfa7aSimwc=<2+>?@V64d&%?Axent2P_B?FzA1>`U2QZKcjYW1!FfV|=Ee5hBZ z4a*!9fES{egX_(Q0uiHF$O<)WheNg4Z`T$%0=w$mC9O7X;TNczyG0Fl$}s%bCPL43 zx2rYZZm@vOI*s3c>!(lC6&lAe-9H%4?`!XkrYYTjGtK@z9a3D<7{d?qL+_sU&w2xM zD!%A?c~^Ts^+SAZ>+LGU5=lEcd_q4yU+TjA&61%bH%EhidtjpU>GP+{f8YY8bcYf~ zOV0&4F(!vA&f#eGe3Ua%O`Z_q>E+?{>u<-|z4PRt^j?2_upQGWsMj?|GZE4Y-}O3? zVvb|jTdsHU<*+YID(mJ&*HZgEliZlxpUg`P!%RZ*ZmK*+ihfD!#OY*m|J)Aqbx!Lw zaagarl=O1?{)gu4wC3kCye2EPzFwI7#aca;i$A3G>E50GOWNs{ud1EgPL|g!Xrj!d z2z{lonHkgFf_8Gyd806yJ(AqzFuG@rw3F$PvUxqJNnMRv{{g+ZAW5ZNA+`Vj002ov JPDHLkV1n9jy;J}I literal 0 HcmV?d00001 diff --git a/pdk/docs/images/submit-patches-0.png b/pdk/docs/images/submit-patches-0.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7eaad2fd999588316799d7d62ffbd1fd186c1a GIT binary patch literal 16149 zcmX9_1yqz>*OicvZV;rqLAo18x*MdC?hfg0U%Ej+x{(m1ySt?u1f=V`{J(3-EM|C~ zxpVJ1`|Q2XnFu8XX_R;G-@SSB1_dG`p#mNU!2dJ^IPlXd(scwpz&eXT)DXZw9|Y6z zH*ZMaKqN%fJTgzRJbiFx?_SnFI^THL(NM;Vh$MdvrusTS&adWJaM~D&{iQ;GX0GL- zVea|9q0!a44E$OZNob`%8Av`*R6eAzfQ5hvLC`+q8oqmSJd?8%>!Oy$Jl(q*Vz?R0 z`nWeT;yG3)ER89Kpn&0`FRhH-Xum#oI9pb;XoFxx3M-T7QrZ$z5M%srf6~;#!UP|# zmNDmGg9yu}xF89KL8IF3LGz#D@qZUxdB*5+VJh{rFx zPn+6psz@@*Z ziLZkSh2m=cZOD*!)Z+Sx{ppJ4LvcvZ8yOk=(BM4D=Wr~UurQ;qWC5&{l#p5kiZRi2 z(L}I6i6V)FFPr-d@!{>(5pLG05sK413P?+2wr?DvBPe1i$iccS<=q9+_{>HcBp7nG zEctoL5DS&RMEgl|@QxYvcgP#cSK%Dg)#N0R1@`EKEhT*~VJa}e3b)+(n1E=iqtRvb zL7cn%Y}cQ&kOCRQS)kE(c-|HTLz2^pNuL`b%#{)%HjO+}Z5MMOVH#IBIjm;4{aEjw5=95D}Bkv-QjmED8u#yaSHx> ztU%bfpGpPcI~FMOl@m^sqiBlOMtJ|EMf2Rg#IHaXkSWK-5?pQ2f;*>Nz))RD7#x^> z<;_!=XAO=vFVs~`G)76Ln-!T-yNi{)%pJTC>I(hL`r>zwbbVajW2gCdK4ii*C|7u- zuHz*d=6l0}&AZO8k(C5&^H|A?>_jKhsuWvO4N`Wd7002!&orU5n!H$EZc?Z`d{J>n zR!1_%tA3v9N}VxzowZo~aayKh_>p(7^hP_mV4T9qfTxgKNLb!} zN|ClCuPi2$hG=TCUMtq?T4jKaDqgGAJy;7ipKbHc&nmO_>R?JdL`VY8!a;3P`bLx! zY{WMX7UG;B2d(~;ZF0eBX`L3d41LjgWFiGZ$e^7bG5moxVu?`<4M}!?`i?hw$9GQ| z`5R2s1I9-WhK5-vJv;t(N<46bex96#3$my{}~See=k{viHJJMXk1%ldGhFgF;s zd{iw_Ux>}!4r>uzGN)i$PXk4>s%$Bw_NJRPy*yt`CMLfdQ4bHQmb}LAN{B<<;*Y2P zVpDOX;4%Y&06AU;d7Y&JnYKRW!7NKsjP>>T4jw-Qa>aU@-(F~TyU=lizVl$6fD;j8 zEsM`tgQrl8($pVYM96q+`H>*Y=ilJ?rnGx(v9kjEe><)=>powUnqy zDKveE>+jqnu{U2Xf{9L>3d=R@P1!G$&QVZiMo(+|5B@OqW=+berI>s$K5_SZJJ&$3 zCK~x4v^>JViX&Nv7Te=h-*5*Rv%~*j7Hb+Z@6PNCb>ldgQ&-@t#t{)3%a_OTE|CTY z<&Cz34Sou^?Y8|)ls~$z^SUF3Lmlo+**ESC%UEnN6862||7dKZc&rc-W0*oZtYn}g zZ7ct^-i72#R+|ey&4-lbF-^l`O18yOUQYtcQVbL%KK_X9LJXOL5kl=9ls~A@&#s8}9rfwFQGTC%ZNqh|o`ti$ zz2W%Z4L83e^CAh$NidW)MP6~5AeuN}45xA>QTzx50} zPi3=xP57SgS>5IQ|KrAegl(GdRIK!kaE76y(D_>P(KTZaRb~d!@`W*pd1G?^|J=(SG z=3+A4@Zv_8+4SiCNhYypLV5LIiZjGe&OgRr&-~(C_vr36%T?g=-bI6HwVS1=L+b2V zn`l9EG-{l2XI@cZ>*&8;8BBqvWlw?g&8x?!xSY#pYij}lft0=H`tUP9e}oS2>rV!r zb_Byh%dx{|1&V&SVf2KSC1{tsT{$YXH|X4k&jRkxyJFz1^76}xQjQ zZN6@tTA$%eim>2cwk_u4;S41IzN4I{;3;3u5l=^|G<{4AG1jd{HpV446759@4-waz zj}cYf%Q=;Q&c`6xN@5AES%~}%`5-29(+5cCB$oGij-vhE(1EyigAI46-QP1||IQf( z_>0r2<-4^wsX$5x&*QHmv&fiq_!a*>$JSytQGdkmRF=-{q2U$L5$c^Jc|c;jJeBUy1Gp+M^(J3uWg`53Pe9 zZO4$a{rz#9*7y_jm+2ASswMk1X4NCJ;28?W-!GAJwff9q!e_#wV#*Sk2ddfHGU+zj z7#+=3sHv&NfBPnr&+=BjBE0YOhZih7vCnl3GqbR?_-V2!m4lBDgDmLKeZDktcW1Ue z6DXmvhYGo5a-(@~y8E+(Dhd7_D5CcC&H4u-N`R z+7ZPUy@eDzns%tP)TC*7;3Q2!1TBx29UzMOtf$EQpxUeOqxRG5}MKE(iIoc2vrs^rXoG#` zsyx*l>6NRhh+!N~-e!M~irb^|W%hM?pm(l$c(e@SMl0i|1^-*Rf3p{N5-?in@Y$a! zk#fUjabO6NU&JTkCyKh*JlOWH$?TX#NMao->%dLnJ&u_xkN!3F*{w}?(3mu)dbHF2-3iuz1%^#jsnoLK2m-|LcjB$Jf0HVH3Zk~Z zY+?A+)rOBAeM-CjMTTL**I+*a1mm502S15gk90>K_`r}>e z%D<$^=$xgLwWqrMZ~sYbgsNDf-f3U%5cll}4h>PYI`H7cQ_>F~fn5?)b#2#H4yL4B z^YD9{UOL@sNDbBTPI*{|r)2WGHG7JI?(a-I&03!gROXj8^e!Vos|z9T2$=S_0X>*u zM)MRJg}26q=Qb|y;0!? z-@YAgw2;J-QhW^PC%LDrZLtpRJu-G>j6mqLD(xhBab@Ca?ZUx({O_f`2_tSEgHtqU z)u@hVF_q5ucHLXZbgmxnHCXzOM34yOiNf&{)@&l9E0N6Cgy5>i2T!=$hhT&~GbD3t zdJk&ZF0YZ$LqFe3zHGPa?oLqAgggh;LC(H?Wrb~8{Y!t4<@0#_3~BqDLZ!#INoU}D zD(mO4{B|2{w9}BJ%PvJ!f=Ac&zZ^uoE2;_fz9Uzs&O)K!NBT(2hR<2OX=+S0sZ>Mbw3%&5!+VN0}V?vkE`QM>Ue5}GU z$VvLFWCp6W%SpDF)Sg77o0^LLPO5_K*v>XdBQHKU&y>Q3>yv*Pq5JimNEEewycVlF zQdTV{{zs~Db{dukAO5`DzMp5?8!pR>zbZ0WIu;XmJ zXOL;F>avE>qWm3%loqsgtww(l)GDYTI1iu zv20o++;%VI`-0MvNSPN(kz>Yd9M0;C87beFvJdnHr~{KkNQl}A=UyKG4v72W2UjD% zizMH=37h1EDIShpwxz*WLxfW^)$TG^jmL@jEYf>gecpLwc=?#qk-Hn8gC~4T_Upl7 z(;mU3jt=A0F%VNjnlygPfc*Vd1Ua|1j?NH3Jtgdr8k7FSjEtzFFAFwY!)VYda(?$s z__oOKP!S^kLNb!xAr1$XFPL$R=HBO$K%jf6DWnAtpgQb$aYN8yAL(nc(_GT6azkBA zzn|ZKX=z+iRnSO>IsVCt-nR@rTxGMhBhpdFA)B zT1F$Q`A^aK3y(zF8s%qLET{dwnkdo1NgTn5a2(c&{cs{n$1!C^finvvG2`_I&QT6X ztN9!Khi!@)02%^(g!Xof)D8Q%hPRH?gYs7*lq6z3Z{E$dl zV?O#mGAe3teB9#qSE&6KyNW;Zj!q;lmp5~iH^1)U@^>y{cf5yvxv7}HhTfyQDxcGI z{VzIBh4Qa3UyTJ zBbFu%Gm^lpC-;0Jrw(a)QW|!|kn!~ud|d`FZ(6pXH}Nddf?iFE?dK?oK#C?bX)B_2 zXbeTK?O!B=E33(lYS0lVQjGNU`9(#cmt*{Bas4KAd(w56grNb!BV(@Yy&>$Gy>yut zIIuFcq)IFW3#J@Qm_w`C2sQ%*;&9%n}k3pd4ntepKad-p`N1=W!sFaYQ@O z4zZL|qO6k2lTBg%J-H{Z+r<{4C5A9GG(<~BXLS2_Ug9{4*w|>dPSGVS+1LV;jbLL5JNkvK@m8D`TWp#`O}*h~041cP^b-$J-`UMalRo6i_IsQJL2IP~IZDygf7bZ`8&YtrrLC+F%|J#aCuTdZC_0nirZaO}p98U_>B-`%{I zJv{Uu10pQ>&XcbYNn}2&%>pYu2t*LYB1wYHTj5*Fxst*%HnWM6QMl(vhA;0WmGK3= zIKF@XzTz~@1dOuF330T^R(JbQ6hgSKt9Hft`GJ5(#$Q}G5qs^Ey`fgf9FXT;bxC!e zoY4n&zMHM`>y7=u@4%O};(N2I=Q1fdP&?8WLkO1Qt)%`RvwjO;?!oAR_xE1U7bzWo zub1sV8g;?4fBcAs6dO$uYafNn8(#E9<5!t=)vsho5;dFey$iALKjmab?ZELp@p;#a z%geiNlIPzb;Tc2plg+&T?FWpS7r39TArr6%D`fHI9eE|SVgBAE-f&12^1WvTH-JMW z8aQcMR{#+C4v&sP z(8bg=HKW>nA0hz?H@bKtr57P~vr0f95x3`Y{)|O(Y2?h!+n5PSNfa*nc;M{o@rC`` zT%SRelJN6ur)6ZszPr0Ko-UG~vp4CB#_)eSG7K@o&j(Au4|VKm2dAbrK@QK>n`_h^ zT4S@wetohGm@1=oZSdit6^A?p5h~WZkdo3;t3)L;d^mtM-zzI))6?I-!DZ5saCBsw zpw$qSNK2-SShnxT%Fidy_By1Kig_PWB-to8JT_)No-KI1+=TY^>S$h7RaLxLA**`P z=5;^5f;oGBN$CXUrv^`ztByq zZiFErAvP;N6EZW2R8&%xMAVc)-h@9}uvPrz-bm(=By zr-TsJ-MRjJ&28XyKs7ZzO~=Iay|6I&hidV~W)us%^&F$n%cHZ`)uE)PCodHh)#IUN zN4{#Yg24TL0kC(2g5c3q^z`KR#C$zEou>+-AV?#?{qzB#R$UJ2{QVk^JD`AZ({93jh24 zw4(6$`ucByfzWS=P~m;=|JC>bWH$k@72ItEp7Hebv{|eT`Hw+!3fxFVMWy7&42}-&AY>-K}xpSur&fzw{C*>-dr$TJ(iBGLUh2j`xJAkT13|Y713EU~1@tG|>l?iZK_A zEqP6KPMv(ins>dTD`a@m{ryc#A~ei>J(H7;GoK|@*Ad`?uyJr4_b14P*Bu!X8XbEk zvmNCm2~D+&^6~=iF87kMv&X)t7+7f+{@Kq@#$fr5FO6M6V7){i`@=HG2%nOQ3KWA* zkP{{4<&+EzM7ietE zGQnM!yp)SaXidj`e>wgJv`CnH9U0+ATGJ~>+R*bO|h;=b8J>KvU z7H?gk5LhLq{{^8AismYl5U`sffZR6Q>Wj&A9^*}xEaSwG#Y}`y45*mi1o6Nh+@edY z)nP9-w(DbrMrd%$e-C@%7eX$>8d5Fvx zYt3Gv0ni>LU0rL>MJmW454pzWGHVRFbjz<@+zdC<&WJ5oUKz%Oe}}VC;2qErV6|FY z=xP~NH8i9^iWX1}XJVar*ddUKL_VUG@kx!GLMjj!$ajg<=OC{4^~+ePlMC;0prQ55eDU@Q_3YO78@m-g`g%bV)p!+Thg_iJD~{`|0bQ(rU)Rr?B#rJA_d}s-C45PHwhfJ1|VI#&Kw04D?kW22jy7+#ynh~Aiw9JJ(M|qvuglVOF7x0 z%V!scg6QC#`C0RK(N{YWEf}Uv9#_xIKdzg$2x`QX*qVs5f9&>F=C~l`4p)jHM z?bZW=hwP89o$NsQldO>ZU%}pLy?W2ggiV8kr*1zYO$vOFC?*zG^WQEcM;;>BAWsRk%z1>$$UHyDk(-7DnXnM?eQv80C6SN?(0U`4C=s z{n9{T{0ab_&-D;if}WjNz$3n^OH4zutVXuhrgyVm8efcb7?VtWt35@?WGa`~w3x=} zMK;IDAjhT>e>Sdvm(dLPaXwF*S&theIe-6JBYEE5*Vr(Y=C-v2NW>-8ZhmUNJkq>< zUVw5@xH``=?C44qUXe41ldHVz*1Zj)&$!m8_UiXLZMlbbQMWGs0j2USNJhr|Es=KP zMO6B{jCC0g8P)1z)e&Dyr7kzoLrQXTUx{)7KD$fFe|W}@i*B^4{qzS15yaS%ebfv; zv)n2Plg3wX^t#cgQHp-H!KuY8M$I`srTX|?{=QoA?WM(rbZyn2ZzQ73aKJV@sR>u6 zu_DNGdu(4xBI7T{?b)|x(yTosvTz-51ijo5Yp2oSrw2@-QcrE5D_1hGQl^!ckIl@_ zs_5vL+a_VO%1i3b)+wY0r4D&mvvNPlK_HzcZUsN+YmZ^0uhW=t5UHVI)9pwxe%x-> z)44$8NtFy@$dHe@-g3ambMJrK>_!N7;I;M8b8``Q$eoMpF8Z6ZqwBDM-6I8|jm4T4BP zdLuN~09F}HEI1b$^tqpYHbU-tT!Dh{rGpArWbo=m!gnO?suM}3RT&40zoM}9LzeeU zqR_cy2KJBF4aLO7p!HjKtIdXSg&zNk&sFGJNJjJ@QrRLFXSz4-%x-v)M#yNDQi?{- zhsYB7xkK}i|LkFylTd_J@{ zFq=5>w@{Si{MBl4v41>%4zF%-zk~C5LX%Q$r%CW~Z%Gxo98lRLy((Y(%>|N(7$QbV zL*u+?mg3m?7LPRe^Z8~kqhWj7?58YSsA3mFOI3^vL2s^*3~tAx&n$}uD68>GO9T}h z=}m7R%B&8)9g8RD9xK7n3E>&UB^|cBd5-^-f=$9>Go!|>q@%A`RjzgjP39sVpS~%c zOc^O#HsKOPoHi(9OF-ViK%#`3`6r2BH0u*pi>TT3bO<_N_{YaKMG9F%#W{XMMe-RA z&3e(qf-MoQWlSR(*OtV*6zIxS`UnBUDooAVXp%P(DU`^gB4}l#5)!b}C^Mm?BHP@Y z?2ERM(YVM3aOAze%(SJDf+y8c7Ln%>f9#7knDp2oriU+@TS+)Mv2XRq(QtD9XWxDY zuf#L z>ja^qfb0(p4;QqxW!f$`HXy!eXNqj{6ogmkzhV9S`%PkE;zIow)r>#n#UUbN_4zpc zX<=zR^B4AAQ<76tQ~Q$z@IX2N@o*OHoS=G08|_OfhTtNeO8~tZjvW_OU?Pr}V1vFI zo~#v}&zsj1sbik-Z#08jRZGj#_N`x0`1UtU85<@hP@5JhZQKwuFse@dxPDW=A<*L* zeCHTOaR&P)J}nIb7RlrA=MAWiluS$~(I-)!Iy^w32Xh29xg$~PF)<+`Ce}r;n08pdPnt*x1d$JY zYh=L(5d@5ii*-JDwo5UfJAVB5@v0wyJoXV}iAO z&jXz{$9Cy)oa|_8hMB%K!7=*Y`Pi{;OzXHNHd0HlN9`CU;LV1^ZJ|KW!u=FbZtCi2 zN6YtX29o8|I~;r}!WMkk4{`+!55j5VI}(+yg^r>}EpoCQO|n#i*HFP?WJg-Z_O*;3 z-B0yE^mm%X2?DL6QRxiQK%ID&6&WZhx7Md>_~katFzu#68gXNie$O(z=arB55E;IV|?DsR5bmf;C8V^%pCsl;GGAba^@kaPR^(r;`*L4JxfupqH5TBG}a&m4NyLjSuIVH=Y ztftoUaa_Q8hOH@hLBOGDd3E#GK<$d@G1F=eVx6hwCD&*fB^UR3e>+Q9_vEIttx%-{ zkDR{#2m6jEE^Te?Xo8P@r8g^WFBCD$L>a4g{dP^$&CV96L_EJ+&)SFe-B-;7i?!1u18-;)hflp1p2PM=SMP_m>(N032IvbcMh|Ljm(}f4UgWdair}UicP@LMr<6 z^Wz<3l4fR9ng*U!K&{L7`B0|9DuKQ0C-Ij9 z$rTY1;d8qY_UbZ%W3Bdo@q0C@sx8Ke?{Ch=VbBDAr*m3sHQEpW81}i_Ntv0ObLvLn zW_3H(LhjB5z`2*>pMA32^byE7yOsm$D2g6FI5IIc=e@D-;8ljopMjuwRD;j>3LTw6 z@UNN`q&=ffJp%CTn3`6^a)f;UdI$(S-)?~bHfma~u!fqMnE`~HrP^+l@7=q1z}MoV zqoV_X^B?!RPtw$s3Lw8dz=)Fo-c5p8T7_=Y1=w(y;%SJv`7TC*z*1Hsb8xlRVaLmp z{prswR5)b(-(Wbd`JgBxRoGt$H7qDH^4;!8TDRcMN)UQix=ebJvbJ`_sJY4I?x@Xj z<7kWBu|FiS+;7e2Qr>(l6QZDi3V}dI(mA8Xg&v}TFGMYuDgx}a)mC?lxpHj*;HLRp z&1#Nh@+Os*(%b#I(rC0>9m?c&_IP=^@w^zM@dS^r_RP(iHwz~x=ZgQ!69QRDMaAn; zZ|w=c@S>-|?wXcWR>I|0SI2|>#6k_Lz)?mBC@q!d6iD4;26op`WoxXiUGrN=qE_{1 zs8+X=O=;nK3}B4!mX=i-cLu%{`1>0MbZ`w{?lmi04(Wj$m64a<0VdKe*a#MYJ7z=J zpiB8lR1_*s_?bueVR2liUMP*IxV$_X+&Bar6#BamkH4Mpp5UaFu|o_&EIj@z7N%lg zh}zsVe)aLdoMCJ}Er7Da!$T$Y*`W_mKX=ouJuXMN3Ak+VSvnrsfj^2>TB@S2Kbp*> zJ1{tC)EkMj;%Ie;>G902_#SQH6Sm0QiC}l}Pf_Jped*L0%a@ zX(%a??v7EfAmEZUy6k4OzUTlpeVoJ&9T#^W|>b zzkGeo>xfBNPmj^>rgc4H*{*ez?-@9*Q9!{(jSIi%frL{AAr=8@90oF6ucF@t)_Es9 zNjS)N-H{A#MS;h^-J6Zec37a)Vi!ooU;-_dvah|Rm!_}n?MnUCO?k;qR= zxVbfIHCX*e%fy89x)?k?hX8y&mlCjnnG+oHub~x_^ZX!5$k6(M5w@H4J!HqJY(S6##178tj7V9 zL8BWOE!I9o>~@unk@;GoA;8)l##hqUmv?lmX-L0+@&ksrn5SoRgICk_aWFcOfCqZc zxHLcx1XyUxbSVI2wTwxLiDCu@#6fTj*1RAldT&_SRT1pVEpqqkgP^B4-&n5${Tb@Rb?8V`M=+q4jV zNNb4n1?WspK_Nbp$|eqKmQ?fyehoDZ4V^L>8(}d7HveazS8JUaIMR+=G2D?Lw$I1? zpH%@XRs46dtSOf*psnXRt4_|qAnOA%+Ze!A*NIycP!KwWg@xh5PX~&dVZx7j`0S?P zJOIaf!JG6{G_BFs*46c9*tgRGOS%_i2m`=Dx==I{<`%aTdH{c<#6EvT$s|m#GWp#r z_h-veQaP=Y@jseJzXn%HSs7NSQ8=*OqP~5@uJL_v1F2hDN_;&ccgp5{ZNp|dfDSBD zGHUsBN}yw?>FMc%jqo>jGwg9Gq+_uGN>=>@UH_h*2rNm^N%;Bl{2*y=Ui7*~;5s&? za(qby(`PB58v$(5NMKL1fp$|uS{fa(_i>Fz|7YUX`@=FxQPBWUQPTn2Ar}@l1e+E) z%-kyXnxY%sVNrIgEw30M5BeC-S5^KIQOqqeAU-0WpB|#3SlYE-c?rlzyPq3y2`MQw zuOGj~<$(OO?NR~M)!wUlLzdTVuxmS)ngr%|LVP^w^WQMxa8Mm4JN*6G{2o0VcmC6i zoS9L}qmA@9{85}PK!bHMhDM&QEd#80ZQ$&ImdPu4Z`Sk^ZvmV(2SzziMt}zTb&xbI zk5(IXGx9!yLok}mm)zdlQ&mzDk&==sE6b*Y9IrGdy>`;bV8M==PUMQpBuW5wgM`cY z`E2c%p4Y+m*X96dYJfbG`Sgh#A9>TMxjaT*emG`)?^W@DNCB&W$jZL{;=mK#zm*3X zC*Zh1%ZVw?8@QFP_5M}r0%iiFP~fWF9#|)sF(&r-10|NH6qPKP!~g_P4X`pWF)Y?R8lY)h3?cValfB_Ru&RFtz<7e#I{>6*-oTqFgUi-ke>gh$#AN8^#gGQ{N*FRDk8hGtw?Pez`&~V)WXIR&$0We}DTad7Ibqo|3;5PhR zwF8VmL|z_+#P=V@)zwur5pSXhsfe+0{;XkAW|E0+-7+r7Q~>{=C>>RGFrRk3_`Qah zGN?;K!^3e4V~^ITs@Ks^qXOK?Wj)VxdImUR^&Y2#BC@^*EzD}_I5(^AIScK+tpH|& zyEkyp&MYk}MnQK{5*UlU@nqsXpcxc`jxkpHMJH^ z`VtjFMX%#9oImK-RD^3{X&{N9SE?~et%}ELdsdU2ykMRFl;&R}nQ3w)oR(vz-AI&L z%h<%X8%FE}IGIUI163-}J{1su^mFOdm8tsJgO=Fo0|{m9S1vW&Y{7?O^1znmUj)O} z*pb|qd*p>hlTEPnJU|hr)slN4!XezxhaoxhXe$I$=dbz#Rel4_;fYq{Jn17{bM}kM z!m$;rCN{L-BztKpia%jX`r*WMQ>)K>?It4jKw>HDz`~91-o6Rec&((l6k3C)^C11F z1?H|`WQmP`ZIhbanB$u$q?||yF`=53PD$>UXDfbu|P(Vx(z^&((HX{0fSCjzYHuE(+Cni2)^rvl-7Jn~|prh$`blZ|q zmmj$!gJ1%7C6;Ukhem9p{V)c5^L1Kn7FLG^7q@>ACW%#t991>=;^FDFet;^Zp@BQ$ z0y6>BsRmwIyHM>Jw~FcXr_D&0{;<335Rt^+M^{p4B&YW5)@RB8{pa}SHx#&U^!Q$# z57!5k9(H@L!9=RZn~s;>o%#Z6b1D5y5k8@O2oYbVivU!{Q*RIzS(@=NH`y!( zg61y}QMN#RO_LjgL@~mL=FKAvt(KIbP$2n0LSBm&Z3Bz=VMQFYKE*?kc^QqD{8D)Nrua2;q!@yb<^^=OwHjg57RP<7J+V;2m%abzsFX`0xCEbU1HtaBsq`HxS>bT z$;oMd?bn0Rhc!O~S$t6$M-y>!lB9qs0bmyv4;u4Y)i4Rrewc!@eyZTUM+eb5(|luCAQ5 zjMEbnzf0B2z_=4=4r_1hGZl4YL;asQ1Pw_lm-px_cT-oXOVwwC7O!ex4e zTSA=Eh-ZZ%D_3CAtY!MvA2I2u0p5*u#g8=KB-C=^sTdH4)q3=q@jxG~`@qF%jCb$P z<=y+`1}KFoM?^|KMB|fvF%CZ35Y{({kmUSEFQYW_3fWXYB7NydqbH4JbGQ42n?)Jg znB9?GlL(?XqfJbN0!KZ}(f)NO*NXv1Lc$7@FC@0kLx_?bPUw=#2yiff!Vk|7 zz6<&L@brrFK=s6c4Nn64_SLt!2@sK{M*rcM#)15S3>lkBXI@=Z*~TrHb)uU-a@B~p z+LX6z*OfDP`p9%V6sPUHL(}2XBlWvioT_l0hUMK9DM1U(xY<(xZOtBRFJ&`rz_2agNe8FW6M zl#4V4zMq`l-p(37>gY&Es%*|_r;s`y%Q^jhBD*t{BRo>t zd{*mtPN?U4Qzr3KHrNuk{ocF%`S^v^<-dR}d(-0vv`qz<+Rbh}t$+6v9+*@3p1oB( zXNiOhZU0o?Y5Iku2m0zJCoKCTizVWFpS;8`QN@H*2}$bj2vz>PgtYtkb43|EaiXTg zT^2tDCQRFzFPBo;=sm)LXJTa6wwE5(sheI{#h#^@-9C{?K9abF1p&EXRayopA10V| zXdG$YU1J)hU|9+bpEarglT`5=N{e>wJ}(fl0IxnhXYOT9|B(m9@$IP`q5j)5;SqlS zd!b&!dGh$%$5}%Pmk>e1F%Y-X5K)<=N3<6#5Z}!_rLPTeeKfWn?Ekg6J4U2#3AysYet>JXsplP zXwDm>iq-B%PS964Hd_CP&tA-Mr|tZ+CpFiHy%onzU#=^HVXnaSRchGw+ikM`QpKl1 zTIZcPbjw$q8(+t|7CZWO|5lrf8n5{}@!>u1(@{VDx$(IjVLD#?iK~xNbGX$}W54`P zO0E^g(1`~5LsVuU% zn^)&z^vepKVYb|`(pxiyzETGZH{P!2r(JDMep;T}ls$;<-Z6T)Mo~Lm9SI*k`@M@U zVa)k9;)}k6XVTsAckjjaU6W7)45Lt=hPOY5cVWH zuWvQ;qnmBAcGQCWakgc}N#S7WARh5(~V!c@8n%-&e1Fn#=7!<6c*D;|bZLt1MkiERvT zRUHtT&f0=2h7gq75$aH#P51FdV!oZ?FQw-J+h^#UUoI>--c9TmtsNrsF02JgC@@Br zq>ven+1!x#sRCPQh3+R&-B}Vme<_F8y))Y`S)`HP-fmunIZ_oRESex#$%xe~Pj*dw zzi}vfIsNEX`NZ-Xiy(re@c&$Y|BTNUa8Hk{Zgvsf&tvhI@(}IA*L~j^%@E+TU`+cB zUbvI&DJ?2EUG^tsCxsW?C76YL_T?1Amuoq9cOhg={w(fV|4TvN6`>oQHgWaBD(7&| zo;u;sYwOyTy2+C1Z4*;ow-fqwjm18nRSDFhxpd-(eI3JZZPdb=B zzc>SNmVC=;Om=7ZiDpg1KtCK<9zD!;pKEe3|0^|B_rQK0x=zNxh5BJZVLT8CaZWQK zJ~4!bH^^S-K{%2B>i5J<2}J9&JMRR?{>MkBnfM&rG9lxU*_(Xpz!m3y44aa^19|cv zs?65H-T{U6l^9*PaL_Or-Cwk8MqY|BF(nwyi%2AhnjOS-CBk+WLKOq~=r_L7@q!FVBw#&#pe&@$=h1UH z<%JDn*c4F>g5q;MlI#4YeZ1O|dEACE^MM1O=iKYD0mtWh%9k{Ey@UZWb}Vrfu<9aY zfxv9f9tuawd5@@g{)jy(L(qJVBXtX1K+tuQmJ_$?yI-}@xh!!7G0uw8kixHoHph;6N%zv9A)V`0!_ zS^oRQ(NaVBgd&DuDrq%UJW59PFC4+xeQ1A@sr5ubNn8R+PWnHM{2MI(R;p=UTJnpX`K!KIa27yru}bP7}%g9nxePL9gFVGlQ^C^iKcY zzCCm`?Zy2sPSOMh5{tWyKH10~N;U!WKG6mSR8E{kpLih5AA1>-~&igE@t z6F}%IiAW~fPC9;>bnKOA{Dc9Y1KBs7j?|OezD+Si zms`DG=mf3&a1(=BeNh~px3u33dhLzwiFtQ|=jkCTl!2=I1EErsWSuGx0Kk|L9; zMDcQwmHz56>ioiJP!S5Vzibd;M@pjUJBBNPIZw#}!(b>pCYsMmA_07|*J+yrm;56g xN>hr{hQq(%u+dVrc&>u4GuF^2Q9+OXOGNL7Xffb1!1vtWKqM6;D#bnr{ts+ZR!#r_ literal 0 HcmV?d00001 diff --git a/pdk/docs/images/submit-patches-1.png b/pdk/docs/images/submit-patches-1.png new file mode 100644 index 0000000000000000000000000000000000000000..777a3c35edf29fc88cf8daa117a7b6b1546977bf GIT binary patch literal 17402 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 Ar2qf` literal 0 HcmV?d00001 diff --git a/pdk/docs/images/workflow-0.png b/pdk/docs/images/workflow-0.png new file mode 100644 index 0000000000000000000000000000000000000000..d8456b5078aa4e4f95d3f9afe0ae089635595280 GIT binary patch literal 130449 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