Merge "docs: Updating PIP N preview docs for DP2" into mnc-mr-docs
diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd
index 460d056..de38f3d 100644
--- a/docs/html/develop/index.jd
+++ b/docs/html/develop/index.jd
@@ -9,7 +9,7 @@
 excludeFromSuggestions=true
 @jd:body
 
-<section class="dac-expand dac-hero dac-section-light">
+<section class="dac-expand dac-hero dac-section-light" style="background:#FFE57F">
   <div class="wrap">
     <div class="cols dac-hero-content">
       <div class="col-1of2 col-push-1of2 dac-hero-figure">
@@ -19,30 +19,41 @@
             frameborder="0" allowfullscreen=""
             style="float: right;"></iframe>
         -->
-        <img class="dac-hero-image" src="{@docRoot}images/develop/hero_image_studio5_2x.png"
-          srcset="/images/develop/hero_image_studio5.png 1x, /images/develop/hero_image_studio5_2x.png 2x" />
+        <a href="{@docRoot}sdk/index.html">
+        <img class="dac-hero-image" src="{@docRoot}images/tools/studio/studio-feature-instant-run_2x.png" />
+        </a>
       </div>
       <div class="col-1of2 col-pull-1of2">
-        <h1 class="dac-hero-title">Get Started with Android Studio</h1>
+        <h1 class="dac-hero-title">
+            <a style="color:inherit" href="{@docRoot}sdk/index.html">
+            Android Studio 2.0,<br>now available!</a></h1>
         <p class="dac-hero-description">
-        Everything you need to build incredible app experiences on phones and tablets, Wear, TV, and Auto. </p>
+        The latest version of Android Studio is the biggest update yet.
+        It includes new features like <strong>Instant Run</strong>, which
+        dramatically speeds up your edit, build, and run cycles, keeping
+        you "in the flow."</p>
         </p>
-        <a class="dac-hero-cta" href="{@docRoot}sdk/index.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Set up Android Studio
-        </a><br>
-        <a class="dac-hero-cta" href="{@docRoot}training/index.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Build your first app
-        </a><br>
-        <a class="dac-hero-cta" href="{@docRoot}guide/index.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Learn about Android
-        </a><br>
-        <a class="dac-hero-cta" href="{@docRoot}samples/index.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Sample projects
-        </a><br>
+        <div class="cols">
+          <div class="col-1of2">
+            <a class="dac-hero-cta" href="{@docRoot}sdk/index.html">
+              <span class="dac-sprite dac-auto-chevron"></span>
+              Get Android Studio
+            </a><br>
+            <a class="dac-hero-cta" href="{@docRoot}training/index.html">
+              <span class="dac-sprite dac-auto-chevron"></span>
+              Build your first app
+            </a>
+          </div>
+          <div class="col-1of2">
+            <a class="dac-hero-cta" href="{@docRoot}guide/index.html">
+              <span class="dac-sprite dac-auto-chevron"></span>
+              Learn about Android
+            </a><br>
+            <a class="dac-hero-cta" href="{@docRoot}samples/index.html">
+              <span class="dac-sprite dac-auto-chevron"></span>
+              See sample projects
+            </a>
+          </div>
       </div>
     </div>
     <!--<div class="dac-section dac-small">
diff --git a/docs/html/images/studio-avdmgr-firstscreen.png b/docs/html/images/studio-avdmgr-firstscreen.png
deleted file mode 100644
index 5da5c6c..0000000
--- a/docs/html/images/studio-avdmgr-firstscreen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/studio-avdmgr-selecthdwr.png b/docs/html/images/studio-avdmgr-selecthdwr.png
deleted file mode 100644
index 015833a..0000000
--- a/docs/html/images/studio-avdmgr-selecthdwr.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/tools/ai-appindexingtest.png b/docs/html/images/tools/ai-appindexingtest.png
new file mode 100644
index 0000000..385bc21
--- /dev/null
+++ b/docs/html/images/tools/ai-appindexingtest.png
Binary files differ
diff --git a/docs/html/images/tools/as-cleanrerun.png b/docs/html/images/tools/as-cleanrerun.png
new file mode 100644
index 0000000..7d57b0f
--- /dev/null
+++ b/docs/html/images/tools/as-cleanrerun.png
Binary files differ
diff --git a/docs/html/images/tools/as-launchavdm.png b/docs/html/images/tools/as-launchavdm.png
index bf15981..f2c7bf3 100644
--- a/docs/html/images/tools/as-launchavdm.png
+++ b/docs/html/images/tools/as-launchavdm.png
Binary files differ
diff --git a/docs/html/images/tools/as-ok.png b/docs/html/images/tools/as-ok.png
new file mode 100644
index 0000000..244a77f
--- /dev/null
+++ b/docs/html/images/tools/as-ok.png
Binary files differ
diff --git a/docs/html/images/tools/as-restart.png b/docs/html/images/tools/as-restart.png
index 12d2923..39122c9 100644
--- a/docs/html/images/tools/as-restart.png
+++ b/docs/html/images/tools/as-restart.png
Binary files differ
diff --git a/docs/html/images/tools/as-stop.png b/docs/html/images/tools/as-stop.png
new file mode 100644
index 0000000..ed1424b
--- /dev/null
+++ b/docs/html/images/tools/as-stop.png
Binary files differ
diff --git a/docs/html/images/tools/as-wrench.png b/docs/html/images/tools/as-wrench.png
new file mode 100644
index 0000000..5886487
--- /dev/null
+++ b/docs/html/images/tools/as-wrench.png
Binary files differ
diff --git a/docs/html/images/tools/avd-configurehp.png b/docs/html/images/tools/avd-configurehp.png
new file mode 100644
index 0000000..e053364
--- /dev/null
+++ b/docs/html/images/tools/avd-configurehp.png
Binary files differ
diff --git a/docs/html/images/tools/avd-hardwareprofile.png b/docs/html/images/tools/avd-hardwareprofile.png
new file mode 100644
index 0000000..f4b6b46
--- /dev/null
+++ b/docs/html/images/tools/avd-hardwareprofile.png
Binary files differ
diff --git a/docs/html/images/tools/avd-main.png b/docs/html/images/tools/avd-main.png
new file mode 100644
index 0000000..f326002
--- /dev/null
+++ b/docs/html/images/tools/avd-main.png
Binary files differ
diff --git a/docs/html/images/tools/avd-systemimage.png b/docs/html/images/tools/avd-systemimage.png
new file mode 100644
index 0000000..7026d84
--- /dev/null
+++ b/docs/html/images/tools/avd-systemimage.png
Binary files differ
diff --git a/docs/html/images/tools/avd-verifyconfig.png b/docs/html/images/tools/avd-verifyconfig.png
new file mode 100644
index 0000000..cd76690
--- /dev/null
+++ b/docs/html/images/tools/avd-verifyconfig.png
Binary files differ
diff --git a/docs/html/images/tools/e-dpad.png b/docs/html/images/tools/e-dpad.png
new file mode 100644
index 0000000..1fb9500
--- /dev/null
+++ b/docs/html/images/tools/e-dpad.png
Binary files differ
diff --git a/docs/html/images/tools/e-emulator.png b/docs/html/images/tools/e-emulator.png
new file mode 100644
index 0000000..4b758b9
--- /dev/null
+++ b/docs/html/images/tools/e-emulator.png
Binary files differ
diff --git a/docs/html/images/tools/e-iback.png b/docs/html/images/tools/e-iback.png
new file mode 100644
index 0000000..ca9b984
--- /dev/null
+++ b/docs/html/images/tools/e-iback.png
Binary files differ
diff --git a/docs/html/images/tools/e-iclose.png b/docs/html/images/tools/e-iclose.png
new file mode 100644
index 0000000..00ecfad
--- /dev/null
+++ b/docs/html/images/tools/e-iclose.png
Binary files differ
diff --git a/docs/html/images/tools/e-ihome.png b/docs/html/images/tools/e-ihome.png
new file mode 100644
index 0000000..a6ce33e
--- /dev/null
+++ b/docs/html/images/tools/e-ihome.png
Binary files differ
diff --git a/docs/html/images/tools/e-ilocation.png b/docs/html/images/tools/e-ilocation.png
new file mode 100644
index 0000000..2c152a6
--- /dev/null
+++ b/docs/html/images/tools/e-ilocation.png
Binary files differ
diff --git a/docs/html/images/tools/e-iminimize.png b/docs/html/images/tools/e-iminimize.png
new file mode 100644
index 0000000..6633539
--- /dev/null
+++ b/docs/html/images/tools/e-iminimize.png
Binary files differ
diff --git a/docs/html/images/tools/e-imore.png b/docs/html/images/tools/e-imore.png
new file mode 100644
index 0000000..dec8902
--- /dev/null
+++ b/docs/html/images/tools/e-imore.png
Binary files differ
diff --git a/docs/html/images/tools/e-ioverview.png b/docs/html/images/tools/e-ioverview.png
new file mode 100644
index 0000000..828d2a5
--- /dev/null
+++ b/docs/html/images/tools/e-ioverview.png
Binary files differ
diff --git a/docs/html/images/tools/e-ipower.png b/docs/html/images/tools/e-ipower.png
new file mode 100644
index 0000000..e08a5bb
--- /dev/null
+++ b/docs/html/images/tools/e-ipower.png
Binary files differ
diff --git a/docs/html/images/tools/e-irotateleft.png b/docs/html/images/tools/e-irotateleft.png
new file mode 100644
index 0000000..07d65f4
--- /dev/null
+++ b/docs/html/images/tools/e-irotateleft.png
Binary files differ
diff --git a/docs/html/images/tools/e-irotateright.png b/docs/html/images/tools/e-irotateright.png
new file mode 100644
index 0000000..939ff4e3
--- /dev/null
+++ b/docs/html/images/tools/e-irotateright.png
Binary files differ
diff --git a/docs/html/images/tools/e-irun.png b/docs/html/images/tools/e-irun.png
new file mode 100644
index 0000000..7247db7
--- /dev/null
+++ b/docs/html/images/tools/e-irun.png
Binary files differ
diff --git a/docs/html/images/tools/e-itakescreenshot.png b/docs/html/images/tools/e-itakescreenshot.png
new file mode 100644
index 0000000..a38d7d9
--- /dev/null
+++ b/docs/html/images/tools/e-itakescreenshot.png
Binary files differ
diff --git a/docs/html/images/tools/e-ivolumedown.png b/docs/html/images/tools/e-ivolumedown.png
new file mode 100644
index 0000000..ef4f386
--- /dev/null
+++ b/docs/html/images/tools/e-ivolumedown.png
Binary files differ
diff --git a/docs/html/images/tools/e-ivolumeup.png b/docs/html/images/tools/e-ivolumeup.png
new file mode 100644
index 0000000..61dff17
--- /dev/null
+++ b/docs/html/images/tools/e-ivolumeup.png
Binary files differ
diff --git a/docs/html/images/tools/e-izoom.png b/docs/html/images/tools/e-izoom.png
new file mode 100644
index 0000000..4b702e8
--- /dev/null
+++ b/docs/html/images/tools/e-izoom.png
Binary files differ
diff --git a/docs/html/images/tools/e-selectdeploymenttarget.png b/docs/html/images/tools/e-selectdeploymenttarget.png
new file mode 100644
index 0000000..60c088b
--- /dev/null
+++ b/docs/html/images/tools/e-selectdeploymenttarget.png
Binary files differ
diff --git a/docs/html/images/tools/instant-run/as-irdebug.png b/docs/html/images/tools/instant-run/as-irdebug.png
new file mode 100644
index 0000000..0754afac
--- /dev/null
+++ b/docs/html/images/tools/instant-run/as-irdebug.png
Binary files differ
diff --git a/docs/html/images/tools/instant-run/as-irrun.png b/docs/html/images/tools/instant-run/as-irrun.png
new file mode 100644
index 0000000..8b5fafa
--- /dev/null
+++ b/docs/html/images/tools/instant-run/as-irrun.png
Binary files differ
diff --git a/docs/html/images/tools/instant-run/update-project-dialog.png b/docs/html/images/tools/instant-run/update-project-dialog.png
new file mode 100644
index 0000000..e106c57
--- /dev/null
+++ b/docs/html/images/tools/instant-run/update-project-dialog.png
Binary files differ
diff --git a/docs/html/images/tools/studio/ic_devices_grey.png b/docs/html/images/tools/studio/ic_devices_grey.png
new file mode 100644
index 0000000..4adfb88
--- /dev/null
+++ b/docs/html/images/tools/studio/ic_devices_grey.png
Binary files differ
diff --git a/docs/html/images/tools/studio/ic_explore_grey.png b/docs/html/images/tools/studio/ic_explore_grey.png
new file mode 100644
index 0000000..d1bc527
--- /dev/null
+++ b/docs/html/images/tools/studio/ic_explore_grey.png
Binary files differ
diff --git a/docs/html/images/tools/studio/ic_school_grey.png b/docs/html/images/tools/studio/ic_school_grey.png
new file mode 100644
index 0000000..93cc855
--- /dev/null
+++ b/docs/html/images/tools/studio/ic_school_grey.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-devices_2x.png b/docs/html/images/tools/studio/studio-feature-devices_2x.png
new file mode 100644
index 0000000..af6f89f
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-devices_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-emulator_2x.jpg b/docs/html/images/tools/studio/studio-feature-emulator_2x.jpg
new file mode 100644
index 0000000..7518931
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-emulator_2x.jpg
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-github_2x.png b/docs/html/images/tools/studio/studio-feature-github_2x.png
new file mode 100644
index 0000000..8d4e30b
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-github_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-gradle_2x.png b/docs/html/images/tools/studio/studio-feature-gradle_2x.png
new file mode 100644
index 0000000..b4821b6
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-gradle_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-instant-run_2x.png b/docs/html/images/tools/studio/studio-feature-instant-run_2x.png
new file mode 100644
index 0000000..b76d7c0
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-instant-run_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-livetemplate.gif b/docs/html/images/tools/studio/studio-feature-livetemplate.gif
new file mode 100644
index 0000000..e265d91
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-livetemplate.gif
Binary files differ
diff --git a/docs/html/images/training/ctl-config.png b/docs/html/images/training/ctl-config.png
new file mode 100644
index 0000000..82f63c8
--- /dev/null
+++ b/docs/html/images/training/ctl-config.png
Binary files differ
diff --git a/docs/html/images/training/ctl-exec-log.png b/docs/html/images/training/ctl-exec-log.png
new file mode 100644
index 0000000..96bbb81
--- /dev/null
+++ b/docs/html/images/training/ctl-exec-log.png
Binary files differ
diff --git a/docs/html/images/training/ctl-test-results.png b/docs/html/images/training/ctl-test-results.png
new file mode 100644
index 0000000..bb2fc93
--- /dev/null
+++ b/docs/html/images/training/ctl-test-results.png
Binary files differ
diff --git a/docs/html/images/training/testartifactcombined.png b/docs/html/images/training/testartifactcombined.png
new file mode 100644
index 0000000..a3b5e81
--- /dev/null
+++ b/docs/html/images/training/testartifactcombined.png
Binary files differ
diff --git a/docs/html/images/training/testartifactseparate.png b/docs/html/images/training/testartifactseparate.png
new file mode 100644
index 0000000..b12b70c
--- /dev/null
+++ b/docs/html/images/training/testartifactseparate.png
Binary files differ
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index 63e93541..3decdf0 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -128,7 +128,6 @@
     "title": "",
     "resources": [
       "https://www.youtube.com/watch?v=K2dodTXARqc&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
-      "https://www.youtube.com/watch?v=3PIc-DuEU2s&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
       "https://www.youtube.com/watch?v=cD7NPxuuXYY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
       "https://www.youtube.com/watch?v=JLLnhwtDoHw&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
       "https://www.youtube.com/watch?v=2I6fuD20qlY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
@@ -1771,4 +1770,20 @@
       "https://developers.google.com/android/nexus/images"
     ]
   },
+  "tools/landing/resources": {
+    "title": "",
+    "resources": [
+    "tools/studio/index.html",
+    "tools/studio/studio-features.html",
+    "sdk/installing/studio-tips.html",
+    ]
+  },
+  "tools/landing/latest": {
+    "title": "",
+    "resources": [
+    "https://medium.com/google-developers/how-often-should-you-update-android-studio-db25785c488e#.8blbql35x",
+    "http://android-developers.blogspot.com/2016/04/android-studio-2-0.html",
+    "https://medium.com/google-developers/writing-more-code-by-writing-less-code-with-android-studio-live-templates-244f648d17c7#.hczcm02du",
+    ]
+  },
 }
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index 75b51fb..eb21dd9 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -17,6 +17,28 @@
  /* TODO Remove standard resources from here, such as below
  */
   {
+    "title":"Writing More Code by Writing Less Code with Android Studio Live Templates",
+    "titleFriendly":"",
+    "summary":"Unless you’re getting paid by the keystroke, no one wants to write repetitive boilerplate code.",
+    "url":"https://medium.com/google-developers/writing-more-code-by-writing-less-code-with-android-studio-live-templates-244f648d17c7#.hczcm02du",
+    "group":"",
+    "keywords": [],
+    "tags": ['studio'],
+    "image":"https://cdn-images-1.medium.com/max/800/1*JkrYXGs1AxZAbK0sCLrJAQ.gif",
+    "type":"medium"
+  },
+  {
+    "title":"How Often Should You Update Android Studio?",
+    "titleFriendly":"",
+    "summary":"One of the beauties of Android Studio is how quickly is evolves and improves.",
+    "url":"https://medium.com/google-developers/how-often-should-you-update-android-studio-db25785c488e#.8blbql35x",
+    "group":"",
+    "keywords": [],
+    "tags": ['studio'],
+    "image":"https://cdn-images-1.medium.com/max/2000/1*chMiA9mGa_FBUOoesHHk3Q.png",
+    "type":"medium"
+  },
+  {
     "title":"Measure your app’s user acquisition channels",
     "titleFriendly":"",
     "summary":"Get details on how to use the Developer Console User Acquisitions reports to discover where your users come from.",
diff --git a/docs/html/ndk/downloads/index.jd b/docs/html/ndk/downloads/index.jd
index b2e15c8..47d3113 100644
--- a/docs/html/ndk/downloads/index.jd
+++ b/docs/html/ndk/downloads/index.jd
@@ -4,20 +4,29 @@
 
 @jd:body
 
-<div id="tos" style="display:none;width:760px;height:0;margin:0 auto">
 
-<div id="download" class="ndk" style="
-z-index: 99;
-width: 720px;
-position: absolute;
-margin: -70px 0;
-padding: 14px;
-background: white;
-border: 1px solid #999;
-box-shadow: -10px 10px 50px #888;
--moz-box-shadow: -10px 10px 50px #888;
--webkit-box-shadow: -10px 10px 50px #888;">
-<p>Before installing the Android NDK, you must agree to the following terms and conditions.</p>
+<!-- start studio download modal -->
+<div data-modal="ndk_tos" class="dac-modal" id="ndk_tos">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <div class="dac-modal-header-actions">
+          <button class="dac-modal-header-close" data-modal-toggle></button>
+        </div>
+        <section class="dac-swap-section dac-active dac-down">
+          <h2 class="norule dac-modal-header-title" id="tos-header">Download the Android NDK</h2>
+        </section>
+      </header>
+      <section class="dac-swap-section dac-active dac-left">
+          <section class="dac-modal-content">
+            <fieldset class="dac-form-fieldset">
+              <div class="cols">
+                <div class="col-2of2 tos-leftCol">
+                  <p class="sdk-terms-intro">Before installing the Android
+                  NDK,
+                  you must agree to the following terms
+                  and conditions.</p>
+                </div>
 <div class="sdk-terms" style="width:auto" onfocus="this.blur()">
 <h2 class="norule">Terms and Conditions</h2>
 This is the Android Software Development Kit License Agreement
@@ -295,17 +304,20 @@
 <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
 <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
 </p>
-<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="downloadForRealz" onclick="return onDownloadNdkForRealz(this);"></a></p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
 </div>
 
-
-
-</div>
-</div>
-
- <div id="qv-wrapper">
-
+                </div>
+              </div>
+            </fieldset>
+          </section>
+        </form>
+      </section>
+    </div>
   </div>
+</div>
+<!-- end ndk_tos modal -->
+
 
   <p>Select, from the table above, the NDK package for your development platform. For information
   about the changes in the newest version of the NDK, see <a href="#rel">Release Notes</a>. For
diff --git a/docs/html/ndk/guides/cpp-support.jd b/docs/html/ndk/guides/cpp-support.jd
index 0074b80..0491367 100644
--- a/docs/html/ndk/guides/cpp-support.jd
+++ b/docs/html/ndk/guides/cpp-support.jd
@@ -170,23 +170,23 @@
 named {@code libgnustl_shared.so}.</p>
 
 
-<h3 id="cs">libC++ runtime:</h3>
+<h3 id="cs">libc++ runtime:</h3>
 <p>This runtime is an Android port of <a href="http://libcxx.llvm.org/">LLVM libc++</a>. Its
 shared library file is named {@code libc++_shared.so}.</p>
 
 <p>By default, this runtime compiles with {@code -std=c++11}. As with GNU {@code libstdc++}, you
-need to explicitly turns on exceptions or RTTI support. For information on how to do this, see
+need to explicitly turn on exceptions or RTTI support. For information on how to do this, see
 <a href="#xp">C++ Exceptions</a> and <a href="#rt">RTTI</a>.</p>
 
-<p>The NDK provides prebuilt static and shared libraries for {@code libc++} compiled by Clang 3.4,
-but you can force the NDK to rebuild {@code libc++} from sources by adding the following line to
-your {@code Application.mk} file, or setting it in your environment prior to building: </p>
+<p>The NDK provides prebuilt static and shared libraries for {@code libc++}, but you can force the
+NDK to rebuild {@code libc++} from sources by adding the following line to your
+{@code Application.mk} file, or setting it in your environment prior to building: </p>
 
 <pre>
 LIBCXX_FORCE_REBUILD := true
 </pre>
 
-<h4>atomic support</h4>
+<h4>Atomic support</h4>
 
 <p>If you include {@code &lt;atomic&gt;}, it's likely that you also need {@code libatomic}.
 If you are using {@code ndk-build}, add the following line:</p>
@@ -201,10 +201,6 @@
 -latomic
 </pre>
 
-<p class="note"><strong>Note: </strong>{@code -latomic} is only available for GCC 4.8.
-Because Clang 3.5 and Clang 3.6 use GCC 4.8's headers and libraries, as well as its
-{@code as} and {@code ld} options, those versions of Clang also get {@code -latomic}.</p>
-
 
 <h4>Compatibility</h4>
 
@@ -217,14 +213,6 @@
 newlocale() WARNING: Trying to set locale to en_US.UTF-8 other than "", "C" or "POSIX"
 </pre>
 
-<p>We do not recommend using {@code libc++} with GCC 4.6 because of GCC 4.6's limited c++11
-support.</p>
-
-<p>For information on {@code libc++} tests that fail to compile, {@code black_list*} in
-{@code $NDK/tests/device/test-libc++-shared-full/jni/Android.mk}. For information about tests
-that fail to run correctly, see {@code $NDK/tests/device/test-libc++-shared-full/BROKEN_RUN}.
-{@code $NDK}, here, is the your NDK installation's root directory.</p>
-
 
 <h2 id="ic">Important Considerations</h2>
 
diff --git a/docs/html/preview/_book.yaml b/docs/html/preview/_book.yaml
index e4f1aba..9f53866 100644
--- a/docs/html/preview/_book.yaml
+++ b/docs/html/preview/_book.yaml
@@ -70,6 +70,8 @@
     path: /preview/j8-jack.html
   - title: Android for Work Updates
     path: /preview/features/afw.html
+  - title: Scoped Directory Access
+    path: /preview/features/scoped-folder-access.html
 
 - title: Samples
   path: /preview/samples.html
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 478f068..c2421eb 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -34,6 +34,7 @@
         <li><a href="#default_trusted_ca">Default Trusted CA</a></li>
         <li><a href="apk_signature_v2">APK signature scheme v2</a></li>
         <li><a href="#scoped_directory_access">Scoped directory access</a></li>
+        <li><a href="#launcher_shortcuts">Launcher shortcuts</a></li>
       </ol>
 </div>
 </div>
@@ -696,8 +697,57 @@
 <a href="{@docRoot}preview/features/scoped-folder-access.html">Scoped
 Directory Access</a> developer documentation.</p>
 
+<h2 id="launcher_shortcuts">
+  Launcher shortcuts
+</h2>
 
+<p>
+  Android N allows apps to define action-specific shortcuts which can be
+  displayed in the launcher. These <em>launcher shortcuts</em> let your users
+  quickly start common or recommended tasks within your app. Each shortcut
+  contains an <a href=
+  "{@docRoot}guide/components/intents-filters.html">intent</a>, which links the
+  shortcut to a specific action in your app. Examples of these actions include:
+</p>
 
+<ul>
+  <li>Navigating users to a particular location in a mapping app.
+  </li>
 
+  <li>Sending messages to a friend in a communication app.
+  </li>
 
+  <li>Playing the next episode of a TV show in a media app.
+  </li>
 
+  <li>Loading the last save point in a gaming app.
+  </li>
+</ul>
+
+<p>
+  Your app can create up to five <em>dynamic shortcuts</em>. When users perform
+  a gesture over your app's launcher icon, these shortcuts appear. By dragging
+  the shortcuts onto the launcher, users can make persistent copies of the
+  shortcuts, called <em>pinned shortcuts</em>. Users can create an unlimited
+  number of pinned shortcuts for each app.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> Although other apps can't access your shortcut data,
+  the launcher <strong>does</strong> have access to this data. Therefore, the
+  shortcuts you create should conceal sensitive user information.
+</p>
+
+<p>
+  You can use this command to view your app's shortcuts:
+</p>
+
+<pre class="no-pretty-print">
+$ adb shell dumpsys shortcut
+</pre>
+<p>
+  To update all shortcuts and to delete dynamic shortcuts, use the appropriate
+  methods that the Launcher Shortcut API provides. For more details about this
+  API, see <code>android.content.pm.ShortcutManager</code> in the downloadable
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>.
+</p>
diff --git a/docs/html/preview/features/background-optimization.jd b/docs/html/preview/features/background-optimization.jd
index e415bd3..79ba5c8 100644
--- a/docs/html/preview/features/background-optimization.jd
+++ b/docs/html/preview/features/background-optimization.jd
@@ -112,7 +112,7 @@
 <p class="note">
   <strong>Note:</strong> A {@link android.content.BroadcastReceiver} registered with
   {@link android.content.Context#registerReceiver Context.registerReceiver()}
-  continues to receive these broadcasts while the app is in the foreground.
+  continues to receive these broadcasts while the app is running.
 </p>
 
 <h3 id="sched-jobs">
@@ -269,7 +269,7 @@
           MY_BACKGROUND_JOB,
           new ComponentName(context, MediaContentJob.class));
   builder.addTriggerContentUri(
-          new JobInfo.TriggerContentUri(MEDIA_URI,
+          new JobInfo.TriggerContentUri(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
           JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
   js.schedule(builder.build());
 }
diff --git a/docs/html/preview/features/direct-boot.jd b/docs/html/preview/features/direct-boot.jd
index aefa4dc..d1530d7 100644
--- a/docs/html/preview/features/direct-boot.jd
+++ b/docs/html/preview/features/direct-boot.jd
@@ -58,7 +58,7 @@
 can run during Direct Boot mode or access device encrypted
 storage. Apps register with the system by marking components as
 <i>encryption aware</i>. To mark your component as encryption aware, set the
-<code>android:encryptionAware</code> attribute to true in your manifest.<p>
+<code>android:directBootAware</code> attribute to true in your manifest.<p>
 
 <p>Encryption aware components can register to receive a
 <code>LOCKED_BOOT_COMPLETED</code> broadcast message from the
@@ -72,7 +72,7 @@
 
 <pre>
 &lt;receiever
-  android:encryptionAware="true" &gt;
+  android:directBootAware="true" &gt;
   ...
   &lt;intent-filter&gt;
     &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
@@ -87,13 +87,13 @@
 
 <p>To access device encrypted storage, create a second
 {@link android.content.Context} instance by calling
-<code>Context.createDeviceEncryptedStorageContext()</code>. All storage API
+<code>Context.createDeviceProtectedStorageContext()</code>. All storage API
 calls made using this context access the device encrypted storage. The
 following example accesses the device encrypted storage and opens an existing
 app data file:</p>
 
 <pre>
-Context directBootContext = Context.createDeviceEncryptedStorageContext();
+Context directBootContext = appContext.createDeviceProtectedStorageContext();
 // Access appDataFilename that lives in device encrypted storage
 FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
 // Use inStream to read content...
@@ -125,8 +125,8 @@
 
 <p>If a user updates their device to use Direct Boot mode, you might have
 existing data that needs to get migrated to device encrypted storage. Use
-<code>Context.migrateSharedPreferencesFrom()</code> and
-<code>Context.migrateDatabaseFrom()</code> to migrate preference and database
+<code>Context.moveSharedPreferencesFrom()</code> and
+<code>Context.moveDatabaseFrom()</code> to migrate preference and database
 data between credential encrypted storage and device encrypted storage.</p>
 
 <p>Use your best judgment when deciding what data to migrate from credential
diff --git a/docs/html/preview/features/scoped-folder-access.jd b/docs/html/preview/features/scoped-folder-access.jd
index 932d8a9..814692d 100644
--- a/docs/html/preview/features/scoped-folder-access.jd
+++ b/docs/html/preview/features/scoped-folder-access.jd
@@ -44,6 +44,14 @@
 all available volumes, including removable media volumes, use
 <code>StorageManager.getVolumesList()</code>.</p>
 
+<p>
+On secondary volumes, such as external SD cards, pass in null when calling
+<code>StorageVolume.createAccessIntent()</code> to request access to the entire
+volume, instead of a specific directory.
+<code>StorageVolume.createAccessIntent()</code> returns null if you pass in
+null to the primary volume, or if you pass in an invalid directory name.
+</p>
+
 <p>The following code snippet is an example of how to open the
 <code>Pictures</code> directory in the primary shared storage:</p>
 
@@ -122,4 +130,15 @@
 
 <p>If the user denies access to an external directory, do not immediately
 request access again. Repeatedly insisting on access results in a poor user
-experience.</p>
+experience. If a request is denied by the user, and the app requests access
+again, the UI displays a <b>Don't ask again</b> checkbox:</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-dont-ask.png"
+srcset="{@docRoot}preview/images/scoped-folder-access-dont-ask.png 1x,
+{@docRoot}preview/images/scoped-folder-access-dont-ask_2x.png 2x" />
+<p class="img-caption"><strong>Figure 1.</strong> An application making a
+second request for access to removable media.</p>
+
+<p>If the user selects <b>Don't ask again</b> and denies the request, all
+future requests for the given directory from your app will be automatically
+denied, and no request UI will be presented to the user.</p>
\ No newline at end of file
diff --git a/docs/html/preview/images/scoped-folder-access-dont-ask.png b/docs/html/preview/images/scoped-folder-access-dont-ask.png
new file mode 100644
index 0000000..5c505d9
--- /dev/null
+++ b/docs/html/preview/images/scoped-folder-access-dont-ask.png
Binary files differ
diff --git a/docs/html/preview/images/scoped-folder-access-dont-ask_2x.png b/docs/html/preview/images/scoped-folder-access-dont-ask_2x.png
new file mode 100644
index 0000000..612b69f
--- /dev/null
+++ b/docs/html/preview/images/scoped-folder-access-dont-ask_2x.png
Binary files differ
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
index f96bf1f..cf38f70 100644
--- a/docs/html/preview/preview_toc.cs
+++ b/docs/html/preview/preview_toc.cs
@@ -17,7 +17,7 @@
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/support.html">
       Support and Release Notes</a></div>
   </li>
-  
+
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/setup-sdk.html"
       es-lang="Configurar el SDK de la versión preliminar"
@@ -82,12 +82,15 @@
 
         <li><a href="<?cs var:toroot ?>preview/features/icu4j-framework.html"
         >ICU4J Support</a></li>
-        
+
         <li><a href="<?cs var:toroot ?>preview/j8-jack.html"
         >Java 8 Language Features</a></li>
 
         <li><a href="<?cs var:toroot ?>preview/features/afw.html"
         >Android for Work Updates</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/scoped-folder-access.html"
+        >Scoped Directory Access</a></li>
       </ul>
   </li>
 
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
index bc40ebd..2793d59 100644
--- a/docs/html/preview/setup-sdk.jd
+++ b/docs/html/preview/setup-sdk.jd
@@ -15,7 +15,7 @@
       <li><a href="#docs-dl">Reference documentation</a>
     </ol>
   </li>
-  <li><a href="#java8">Get the Java 8 JDK and JRE</a></li>
+  <li><a href="#java8">Get the Java 8 JDK</a></li>
   <li><a href="#create-update">Update or Create a Project</a></li>
   <li><a href="#next">Next Steps</a></li>
 </ol>
@@ -55,7 +55,7 @@
 
 <p>To download Android Studio 2.1 as a separate installation, follow these
 steps (or if you want to receive Android Studio 2.1 as an update to your
-existing installation, skip to step 4):</p>
+existing installation, skip to step 6):</p>
 
 <ol>
   <li>Edit the name of your
@@ -67,6 +67,16 @@
   </li>
   <li>Unzip the package and move the Android Studio 2.1 contents to the
     appropriate location for applications on your system, then launch it.</li>
+  <li>In the setup wizard, click <strong>Next</strong> a couple times to
+  reach the SDK Components Setup screen. Here,
+  you must set a different path for the <strong>Android SDK Location</strong>.
+  It can be any directory you want, but it must not be the default path, which
+  is the same directory used by your original version of Android Studio (unless
+  you changed that one yourself). The SDK location for Android Studio 2.1
+  must be different because the N Preview SDK packages are not compatible with
+  versions of Android Studio lower than 2.1.</p>
+  </li>
+  <li>Continue with the setup wizard until you reach the Android Studio IDE.</li>
   <li>Open the Settings dialog
     (<strong>File &gt; Settings</strong> on Windows/Linux, or
     <strong>Android Studio &gt; Preferences</strong> on Mac). In the left
@@ -140,13 +150,11 @@
 
 
 
-<h2 id="java8">Get the Java 8 JDK and JRE</h2>
+<h2 id="java8">Get the Java 8 JDK</h2>
 
-<p>To compile your app against the Android N platform, you need to use
-the Java 8 Developer Kit (JDK 8), and in order to use some tools with Android
-Studio 2.1, you need to install the Java 8 Runtime Environment (JRE 8). So, if
-you don't have the latest version of each already, download JDK 8 and JRE 8
-now.</p>
+<p>To compile your app against the Android N platform and use some tools with
+Android Studio 2.1, you need to install the Java 8 Developer Kit (JDK 8). So, if
+you don't already have the latest version, download JDK 8 now.</p>
 
 <p>Then set the JDK version in Android Studio as follows:</p>
 
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 10f8900..ddc6e14 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,60 +1,80 @@
 page.title=Download Android Studio and SDK Tools
-page.tags="sdk, android studio,tools"
+page.tags=sdk, android studio
 page.template=sdk
-page.image=images/cards/android-studio_2x.png
+section.landing=true
 header.hide=1
+nonavpage=true
+fullpage=true
+page.image=images/cards/android-studio_2x.png
 page.metaDescription=Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.
 
 @jd:body
 
-<style type="text/css">
-  .offline {display:none;}
-  h2.feature {
-    padding-top:30px;
-    margin-top:0;
-    clear:both;
-  }
-  .feature-blurb {
-  margin:0px; font-size:16px; font-weight:300;
-  padding-top:40px;
-  }
-
-  .landing-button .small {
-    font-size: 12px;
-    font-weight: normal;
-    line-height: 12px;
-    display: block;
-  }
-
-  h1.studio-logo {
-    width:226px;
-    height:78px;
-    display:block;
-    padding:0;
-    white-space: nowrap;
-    text-indent: -10000px;
-    font-size:0px;
-    background: url(../images/tools/studio-logo.png);
-    background-image: -webkit-image-set(url(../images/tools/studio-logo.png) 1x, url(../images/tools/studio-logo_2x.png) 2x);
-    background-size: 226px 78px;
-  }
-
+<style>
+.download-bundle-button {line-height:18px;}
+.download-bundle-button .small {font-size: 12px; opacity: 0.7;}
 </style>
 
+ <section class="dac-expand dac-hero dac-light">
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-1of2 col-push-1of2 dac-hero-figure">
+        <img class="dac-hero-image" src="/images/develop/hero_image_studio5_2x.png" srcset="/images/develop/hero_image_studio5.png 1x, /images/develop/hero_image_studio5_2x.png 2x">
+      </div>
+      <div class="col-1of2 col-pull-1of2" style="margin-bottom:40px">
+<h1 class="dac-hero-title">Android Studio<br>
+<span style="font-size: 65%;">The Official IDE for Android</span></h1>
+
+<p class="dac-hero-description">Android Studio provides the fastest tools for
+building apps on every type of Android device.</p>
+
+<p class="dac-hero-description">World-class code editing, debugging,
+performance tooling, a flexible build system, and an instant build/deploy
+system all allow you to focus on building unique and high quality apps.</p>
+
+<p style="margin-top:24px">
+  <a class="landing-button green download-bundle-button"
+    data-modal-toggle="studio_tos">Download Android Studio 2.0<br>
+  <span class="small"></span></a>
+</p>
+
+<p style="margin:24px 0 0">
+  <a class="dac-hero-cta" href="{@docRoot}tools/studio/index.html">
+  <span class="dac-sprite dac-auto-chevron"></span>
+  Read the docs</a>
+  <a class="dac-hero-cta" href="{@docRoot}tools/revisions/studio.html">
+  <span class="dac-sprite dac-auto-chevron"></span>
+  See the release notes</a>
+</p>
+      </div>
+    </div>
+  </div>
+</section>
 
 
 
 
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">Download</h1>
-
-<p class="sdk-terms-intro">Before installing Android Studio or the standalone SDK tools,
-you must agree to the following terms and conditions.</p>
+<!-- start studio download modal -->
+<div data-modal="studio_tos" class="dac-modal" id="langform">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <div class="dac-modal-header-actions">
+          <button class="dac-modal-header-close" data-modal-toggle></button>
+        </div>
+        <section class="dac-swap-section dac-active dac-down">
+          <h2 class="norule dac-modal-header-title" id="tos-header">Download Android Studio</h2>
+        </section>
+      </header>
+      <section class="dac-swap-section dac-active dac-left">
+          <section class="dac-modal-content">
+            <fieldset class="dac-form-fieldset">
+              <div class="cols">
+                <div class="col-2of2 tos-leftCol">
+                  <p class="sdk-terms-intro">Before downloading,
+                  you must agree to the following terms
+                  and conditions.</p>
+                </div>
 
 <div class="sdk-terms" onfocus="this.blur()">
 <h2 class="norule">Terms and Conditions</h2>
@@ -188,9 +208,7 @@
 14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
 <em>November 20, 2015</em>
-</div>
-
-
+</div><!-- close sdk-terms -->
 
 
 
@@ -198,243 +216,322 @@
   <p>You're just a few steps away from building apps for Android!</p>
   <p>In a moment, you'll be redirected to
   <a id="next-link" href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a>.</p>
-
 </div><!-- end next-steps -->
 
-
-
 <div id="sdk-terms-form">
 <p>
 <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
 <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
 </p>
 <p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div><!-- end sdk-terms-form -->
+
+
+</div><!-- end cols -->
+
+            </fieldset>
+          </section>
+      </section>
+    </div><!-- end dac-modal-window -->
+  </div><!-- end dac-modal-container -->
+</div><!-- end #langform, .dac-modal -->
+<!-- end studio_tos modal -->
+
+<div id="useOldTemplates" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#features">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <div class="actions">
+      <div><a href="#features">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Features
+      </a></div>
+      <div><a href="#latest">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Latest
+      </a></div>
+      <div><a href="#resources">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Resources
+      </a></div>
+      <div><a href="#videos">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Videos
+      </a></div>
+      <div><a href="#downloads">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Download Options
+      </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
 </div>
 
 
-</div><!-- end TOS -->
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button href="#features">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="#features">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Features
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#latest">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Latest
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#resources">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Resources
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#videos">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Videos
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#downloads">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Download Options
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end new templates -->
 
 
 
+<section id="features" class="dac-section dac-small">
+<div class="dac-toggle">
 
-
-
-<div id="landing">
-
-<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png"
-srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x"
-width="760" alt="" />
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important;padding:0 !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">The official Android IDE</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Android Studio IDE</li>
-<li>Android SDK tools</li>
-<li>Android 6.0 (Marshmallow) Platform</li>
-<li>Android 6.0 emulator system image with Google APIs</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-To get Android Studio or stand-alone SDK tools, visit <a
-href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 col-push-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-instant-run_2x.png">
+    </div>
+    <div class="col-1of2 col-pull-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Instant Run</h1>
+<p class="dac-hero-description">Push code and resource
+changes to your app running on a device or emulator and see the
+changes instantly come to life.</p>
+<p class="dac-hero-description">Instant Run dramatically speeds up your edit,
+build, and run cycles, keeping you "in the flow."</p>
+      <a class="dac-hero-cta"
+        href="/tools/building/building-studio.html#instant-run">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
 </div>
 
-<ul>
-  <li><a href="#Requirements">System Requirements</a></li>
-  <li><a href="#Other">Other Download Options</a></li>
-  <li><a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a></li>
-  <li><a href="https://www.google.com/intl/en/usability/index.html?l=9&reserved=0&pType=devel&productTag=0&campaignType=ghc&campaignDate=0&labelTag=0&referral_code=ASDWNLD">Participate in usability research</a></li>
-  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform"
-target="_blank">Take a Survey</a></li>
-</ul>
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 dac-hero-figure">
+      <img src="/images/tools/codeeditor-low.gif" >
+    </div>
+    <div class="col-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Intelligent code editor</h1>
+<p class="dac-hero-description">Write better code, work faster, and be more productive with an intelligent code editor that helps you each step of the way.</p>
+<p class="dac-hero-description">Android Studio is built on IntelliJ and is capable of advanced code completion, refactoring, and code analysis.</p>
+    </div>
+  </div>
+</div>
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 col-push-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-emulator_2x.jpg">
+    </div>
+    <div class="col-1of2 col-pull-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Fast and feature-rich emulator</h1>
+<p class="dac-hero-description">Install and run your apps faster than with a physical device and test your app on virtually any Android device configuration: Android phones, Android tablets, Android Wear, and Android TV devices.</p>
+<p class="dac-hero-description">The new Android Emulator 2.0 is faster than ever and allows you to dynamically resize the emulator and access a suite of sensor controls.</p>
+      <a class="dac-hero-cta"
+        href="/tools/devices/emulator.html">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
+</div>
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-gradle_2x.png">
+    </div>
+    <div class="col-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Robust and flexible build system</h1>
+<p class="dac-hero-description">Easily configure your project to include code libraries and generate multiple build variants from a single project.</p>
+<p class="dac-hero-description">With Gradle, Android Studio offers high-performance build automation, robust dependency management, and customizable build configurations.</p>
+      <a class="dac-hero-cta"
+        href="/tools/building/plugin-for-gradle.html">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
+</div>
+
+<div class="dac-toggle-content clearfix">
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 col-push-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-devices_2x.png">
+    </div>
+    <div class="col-1of2 col-pull-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Develop for all&nbsp;<wbr>Android&nbsp;devices</h1>
+<p class="dac-hero-description">Target multiple form factors with a single
+project to easily share code among your different versions of your app.</p>
+<p class="dac-hero-description">Android Studio provides a unified environment
+to develop apps for Android phones, tablets, Android Wear, Android TV, and
+Android Auto.</p>
+
+      <a class="dac-hero-cta"
+        href="/tools/building/configuring-gradle.html#workBuildVariants">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
+</div>
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-github_2x.png">
+    </div>
+    <div class="col-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Code templates and GitHub integration</h1>
+      <p class="dac-hero-description">Start projects with code templates for patterns such as navigation drawer and view pagers, or import Google code samples from GitHub.</p>
+      <p class="dac-hero-description">Android Studio's project wizards make it easier than ever to add code in a new project.</p>
+    </div>
+  </div>
+</div>
+
+</div><!-- end dac-toggle-content -->
+
+<div class="dac-section-links dac-text-center feature-more">
+  <div class="dac-section-link" data-toggle="section">
+    <span class="dac-toggle-expand">More
+      <i class="dac-sprite dac-auto-unfold-more"></i>
+    </span>
+    <span class="dac-toggle-collapse">Less
+      <i class="dac-sprite dac-auto-unfold-less"></i>
+    </span>
+  </div>
+</div>
+
+</div>
+</section><!-- end features -->
 
 
 
+<section id="latest" class="dac-section dac-light dac-small"><div class="wrap">
+  <h1 class="dac-section-title">Latest News</h1>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:tools/landing/latest"
+       data-cardSizes="6x6"
+       data-items-per-page="3"
+       data-initial-results="3"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+<section id="resources" class="dac-section dac-small"><div class="wrap">
+  <h1 class="dac-section-title">Resources</h1>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:tools/landing/resources"
+       data-cardSizes="6x6"
+       data-initial-results="3"
+       data-items-per-page="3"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+<section class="dac-section dac-light dac-small dac-gray" id="videos"><div class="wrap">
+  <h1 class="dac-section-title">Videos</h1>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/tools"
+       data-sortOrder="-timestamp"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+
+
+<section id="Requirements" class="dac-section dac-light dac-small">
+<div class="wrap">
+
+<h2 class="norule">System Requirements</h2>
 
 <div class="cols">
-<h2 class="feature norule col-13">Intelligent code editor</h2>
 
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-code.png"
-srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>At the core of Android Studio is an intelligent code editor capable of advanced
-  code completion, refactoring, and code analysis.</p>
-  <p>The powerful code editor helps you be a more productive Android app developer.</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule col-13">Code templates and GitHub integration</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-import.png"
-srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>New project wizards make it easier than ever to start a new project.</p>
-
-  <p>Start projects using template code for patterns such as navigation drawer and view pagers,
-  and even import Google code samples from GitHub.</p>
-</div>
-
-
-
-
-<h2 class="feature norule col-13">Multi-screen app development</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-screens.png"
-srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>Build apps for Android phones, tablets, Android Wear,
-  Android TV, Android Auto and Google Glass.</p>
-  <p>With the new Android Project View and module support in Android Studio, it's easier
-  to manage app projects and resources.
-</div>
-
-
-
-
-<h2 class="feature norule col-13">Virtual devices for all shapes and sizes</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-avds.png"
-srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>Android Studio comes pre-configured with an optimized emulator image.</p>
-  <p>The updated and streamlined Virtual Device Manager provides
-  pre-defined device profiles for common Android devices.</p>
-</div>
-
-
-
-
-<h2 class="feature norule col-13">
-Android builds evolved, with Gradle</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-gradle.png"
-srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>Create multiple APKs for your Android app with different features using the same project.</p>
-  <p>Manage app dependencies with Maven.</p>
-  <p>Build APKs from Android Studio or the command line.</p>
-</div>
-
-</div>
-
-<h2 class="feature norule">More about Android Studio</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button"
-style="margin:0 0 40px 60px;float:right"
-href="" >Download Android Studio</a>
-
-  <ul>
-  <li>Built on IntelliJ IDEA Community Edition, the popular Java IDE by JetBrains.</li>
-  <li>Flexible Gradle-based build system.</li>
-  <li>Build variants and multiple APK generation.</li>
-  <li>Expanded template support for Google Services and various device types.</li>
-  <li>Rich layout editor with support for theme editing.</li>
-  <li>Lint tools to catch performance, usability, version compatibility, and other problems.</li>
-  <li>ProGuard and app-signing capabilities.</li>
-  <li>Built-in support for Google Cloud Platform, making it easy to integrate Google Cloud
-  Messaging and App Engine.</li>
-  </ul>
-
-<p style="margin:0">
-For more details about features available in Android Studio,
-read the overview at <a href="{@docRoot}tools/studio/index.html">Android Studio</a>.</p>
-</div>
-
-
-<p>If you have been using Eclipse with ADT, be aware that Android Studio is now the official IDE
-for Android, so you should migrate to Android Studio to receive all the
-latest IDE updates. For help moving projects,
-see <a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android
-Studio</a>.</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">System Requirements</h2>
-
-<h3>Windows</h3>
-
+<div class="col-2of6">
+<h4>Windows</h4>
 <ul>
-<li>Microsoft&reg;  Windows&reg;  8/7/Vista (32- or 64-bit)</li>
-<li>2 GB RAM minimum, 4 GB RAM recommended</li>
-<li>400 MB hard disk space</li>
-<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
+<li>Microsoft&reg;  Windows&reg;  7/8/10 (32- or 64-bit)</li>
+<li>2 GB RAM minimum, 8 GB RAM recommended</li>
+<li>2 GB of available disk space minimum,<br>4 GB Recommended
+(500 MB for IDE + 1.5 GB for
+Android SDK and emulator system image)</li>
 <li>1280 x 800  minimum screen resolution</li>
-<li>Java Development Kit (JDK) 7 </li>
-<li>Optional for accelerated emulator: Intel® processor with support for Intel® VT-x, Intel® EM64T
-(Intel® 64), and Execute Disable (XD) Bit functionality</li>
+<li>Java Development Kit (JDK) 8</li>
+<li>For accelerated emulator: 64-bit operating system and
+Intel® processor with support for Intel®
+VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality</li>
 </ul>
+</div>
 
-
-<h3>Mac OS X</h3>
-
+<div class="col-2of6">
+<h4>Mac</h4>
 <ul>
-<li>Mac&reg;  OS X&reg;  10.8.5 or higher, up to 10.9 (Mavericks)</li>
-<li>2 GB RAM minimum, 4 GB RAM recommended</li>
-<li>400 MB hard disk space</li>
-<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
+<li>Mac&reg;  OS X&reg;  10.8.5 or higher, up to 10.11.4 (El Capitan)</li>
+<li>2 GB RAM minimum, 8 GB RAM recommended</li>
+<li>2 GB of available disk space minimum,<br>4 GB Recommended
+(500 MB for IDE + 1.5 GB for
+Android SDK and emulator system image)</li>
 <li>1280 x 800 minimum screen resolution</li>
-<li>Java Runtime Environment (JRE) 6</li>
-<li>Java Development Kit (JDK) 7</li>
+<li>Java Development Kit (JDK) 6</li>
 </ul>
+</div>
 
-<p>On Mac OS, run Android Studio with Java Runtime Environment (JRE) 6 for optimized font
-rendering. You can then configure your project to use Java Development Kit (JDK) 6 or JDK 7.</p>
-
-
-
-<h3>Linux</h3>
-
+<div class="col-2of6">
+<h4>Linux</h4>
 <ul>
-<li>GNOME or KDE desktop</li>
-<li>GNU C Library (glibc) 2.15 or later</li>
-<li>2 GB RAM minimum, 4 GB RAM recommended</li>
-<li>400 MB hard disk space</li>
-<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
-<li>1280 x 800 minimum screen resolution</li>
-<li>Oracle&reg;  Java Development Kit (JDK) 7 </li>
+<li>GNOME or KDE desktop
+<p><i>Tested on Ubuntu®  12.04, Precise Pangolin (64-bit distribution
+capable of running 32-bit applications)</i></li>
 <li>64-bit distribution capable of running 32-bit applications</li>
+<li>GNU C Library (glibc) 2.11 or later</li>
+<li>2 GB RAM minimum, 8 GB RAM recommended</li>
+<li>2 GB of available disk space minimum,<br>4 GB Recommended
+(500 MB for IDE + 1.5 GB for
+Android SDK and emulator system image)</li>
+<li>1280 x 800 minimum screen resolution</li>
+<li>Java Development Kit (JDK) 8</li>
+<li>For accelerated emulator: Intel® processor with support for Intel®
+VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality,
+or AMD processor with support for AMD Virtualization™ (AMD-V™)</li>
 </ul>
-<p>Tested on Ubuntu&reg;  14.04, Trusty Tahr (64-bit distribution capable of running
-32-bit applications).</p>
+</div>
 
+</div>
+</div>
 
+</section>
 
-
-<h2 id="Other" style="clear:left">Other Download Options</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html/sdk/installing/adding-packages.jd b/docs/html/sdk/installing/adding-packages.jd
deleted file mode 100644
index 70bb9fa..0000000
--- a/docs/html/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,227 +0,0 @@
-page.title=Adding SDK Packages
-
-page.tags=sdk manager
-helpoutsWidget=true
-
-@jd:body
-
-<style>
-ol.large {
-  margin-left:0;
-}
-ol.large > li {
-  list-style-position: inside;
-  list-style-type:none;
-  margin:30px 0 0 0;
-  padding:30px 20px;
-  background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
-  display:inline;
-  left:-40px;
-  float:left;
-  width:20px;
-  font-size:20px;
-  line-height:20px;
-}
-ol.large > li > h2 {
-  font-size:20px;
-  line-height:20px;
-  padding:0 0 0 20px;
-  margin:0 0 20px 0;
-  display:inline;
-  font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
-  content:"1. ";
-}
-ol.large > li:nth-child(2):before {
-  content:"2. ";
-}
-ol.large > li:nth-child(3):before {
-  content:"3. ";
-}
-ol.large > li:nth-child(4):before {
-  content:"4. ";
-}
-ol.large > li:nth-child(5):before {
-  content:"5. ";
-}
-ol.large > li:nth-child(6):before {
-  content:"6. ";
-}
-</style>
-
-
-<p>
-By default, the Android SDK does not include everything you need to start developing.
-The SDK separates tools, platforms, and other components into packages you can
-download as needed using the
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.
-So before you can start, there are a few packages you should add to your Android SDK.</p>
-
-<p>To start adding packages, launch the Android SDK Manager in one of the following ways:</p>
-<ul>
-  <li>In Android Studio, click <strong>SDK Manager</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png"
-style="vertical-align:bottom;margin:0;height:17px" /> in the toolbar.</li>
-  <li>If you're not using Android Studio:
-    <ul>
-      <li>Windows: Double-click the <code>SDK Manager.exe</code> file at the root of the Android
-  SDK directory.</li>
-      <li>Mac/Linux: Open a terminal and navigate to the <code>tools/</code> directory in the
-      location where the Android SDK was installed, then execute <code>android sdk</code>.</li>
-    </ul>
-  </li>
-</ul>
-
-<p>When you open the SDK Manager for the first time, several packages are selected by
-default. Leave these selected, but be sure you have everything you need
-to get started by following these steps:</p>
-
-
-<ol class="large">
-<li>
-  <h2 id="GetTools" class="norule">Get the latest SDK tools</h2>
-
-  <p>As a minimum when setting up the Android SDK,
-  you should download the latest tools and Android platform:</p>
-  <ol>
-   <li>Open the Tools directory and select:
-     <ul>
-       <li><strong>Android SDK Tools</strong></li>
-       <li><strong>Android SDK Platform-tools</strong></li>
-       <li><strong>Android SDK Build-tools</strong> (highest version)</li>
-     </ul>
-   </li>
-   <li>Open the first Android X.X folder (the latest version) and select:
-     <ul>
-      <li><strong>SDK Platform</strong></li>
-      <li>A system image for the emulator, such as <br>
-      <strong>ARM EABI v7a System Image</strong></li>
-     </ul>
-   </li>
-  </ol>
-</li>
-
-<li>
-  <h2 id="GetSupportLib" class="norule">Get the support library for additional APIs</h2>
-
-  <div class="sidebox">
-    <p>The support library is required for:</p>
-    <ul>
-      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
-      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
-      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
-    </ul>
-
-    <p>It also provides these popular APIs:</p>
-    <ul>
-      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Navigation
-      drawer</a></li>
-      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Swipe views</a></li>
-      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Backward-compatible
-      action bar</a></li>
-    </ul>
-  </div>
-
-  <p>The <a href="{@docRoot}tools/support-library/features.html">Android Support Library</a>
-  provides an extended set of APIs that are compatible with most versions of Android.</p>
-
-  <p>Open the <strong>Extras</strong> directory and select:</p>
-     <ul>
-       <li><strong>Android Support Repository</strong></li>
-       <li><strong>Android Support Library</strong></li>
-     </ul>
-
-  <p>&nbsp;</p>
-  <p>&nbsp;</p>
-
-</li>
-
-
-<li>
-  <h2 id="GetGoogle" class="norule">Get Google Play services for even more APIs</h2>
-
-  <div class="sidebox">
-
-    <p>The Google Play services APIs provide a variety of features and services for your Android
-    apps, such as:</p>
-    <ul>
-      <li><a href="{@docRoot}google/play-services/plus.html">User authentication</a></li>
-      <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
-      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
-      <li><a href="{@docRoot}google/play-services/games.html">Games achievements and
-      leaderboards</a></li>
-      <li><a href="{@docRoot}google/play-services/index.html">And much more</a></li>
-    </ul>
-  </div>
-
-  <p>To develop with Google APIs, you need the Google Play services package:</p>
-  <p>Open the <strong>Extras</strong> directory and select:</p>
-     <ul>
-       <li><strong>Google Repository</strong></li>
-       <li><strong>Google Play services</strong></li>
-     </ul>
-
-  <p class="note"><strong>Note:</strong> Google Play services APIs are not available on all
-  Android-powered devices, but are available on all devices with Google Play Store. To use these
-  APIs in the Android emulator, you must also install the the <strong>Google APIs</strong>
-  system image from the latest Android X.X directory in the SDK Manager.</p>
-</li>
-
-
-<li>
-  <h2 id="Install" class="norule">Install the packages</h2>
-  <p>Once you've selected all the desired packages, continue to install:</p>
-  <ol>
-   <li>Click <strong>Install X packages</strong>.</li>
-   <li>In the next window, double-click each package name on the left
-   to accept the license agreement for each.</li>
-   <li>Click <strong>Install</strong>.</li>
-  </ol>
-  <p>The download progress is shown at the bottom of the SDK Manager window.
-  <strong>Do not exit the SDK Manager</strong> or it will cancel the download.</p>
-</li>
-
-<li>
-  <h2 id="Build" class="norule">Build something!</h2>
-
-<p>With the above packages now in your Android SDK, you're ready to build apps
-for Android. As new tools and other APIs become available, simply launch the SDK Manager
-  to download the new packages for your SDK.</p>
-
-<p>Here are a few options for how you should proceed:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>Get started</h3>
-<p>If you're new to Android development, learn the basics of Android apps by following
-the guide to <strong><a href="{@docRoot}training/basics/firstapp/index.html"
->Building Your First App</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Build for wearables</h3>
-<p>If you're ready to start building apps for Android wearables, see the guide to
-<strong><a href="{@docRoot}wear/preview/start.html">Building Apps for Android Wear</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Use Google APIs</h3>
-<p>To start using Google APIs, such as Maps or
-Play Game services, see the guide to
-<strong><a href="{@docRoot}google/play-services/setup.html">Setting Up Google Play
-Services</a></strong>.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
index c47b9c3d..e4d860b 100644
--- a/docs/html/sdk/installing/index.jd
+++ b/docs/html/sdk/installing/index.jd
@@ -1,362 +1,218 @@
-page.title=Installing the Android SDK
+page.title=Install Android Studio
 excludeFromSuggestions=true
 
 page.tags=sdk tools
-helpoutsWidget=true
 
 @jd:body
 
 <style>
-p.paging-links {
-  margin:0 0 40px;
-}
-.paging-links .next-page-link {
-  right:initial;
-}
-.procedure-box {
-  padding:20px 20px 5px;
-  margin-bottom:1em;
-  background:#eee;
-}
-.landing-button {
-  min-width: 155px;
-  text-align: center;
+.instruction-select {
+  float:right;
+  background: #f7f7f7;
+  padding: 15px;
+  margin: -15px 0 20px 40px;
 }
 </style>
 
+<div class="instruction-select">
+<p><strong>Instructions for</strong></p>
+<select id="instructions-option" onchange="showInstructions(this.value)" style="padding:4px">
+  <option value="windows">Windows</option>
+  <option value="mac">Mac</option>
+  <option value="linux">Linux</option>
+</select>
+</div>
+
+<p>Setting up Android Studio takes just a few clicks.</p>
+
+<p>While the <a href="{@docRoot}sdk/index.html">Android Studio download</a>
+completes, verify which version of the JDK you have:
+open a command line and type <code>javac -version</code>. If the JDK
+is not available or the version is lower than 1.8, download the <a href=
+"http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
+class="external-link">Java SE Development Kit 8</a>.</p>
 
 
-<!-- ################    STUDIO    ##################### -->
-<div id="studio" heading="Installing Android Studio" style="display:none">
+<div id="system-windows" style="display:none">
 
-<p>Android Studio provides everything you need to start developing apps for Android, including
-the Android Studio IDE and the Android SDK tools.</p>
+<p>To install Android Studio on Windows, proceed as follows:</p>
+<ol>
+  <li>Launch the <code>.exe</code> file you downloaded.</li>
+  <li>Follow the setup wizard to install Android Studio and any necessary SDK tools.
 
-<p class="note"><strong>Note:</strong> If you have not yet downloaded Android Studio, <a href="{@docRoot}sdk/index.html"
-><b>download</b></a> it now.</p>
+  <p>On some Windows systems, the launcher script does not find where the JDK is installed.
+    If you encounter this problem,
+    you need to set an environment variable indicating the correct location.</p>
+    <p>Select <strong>Start menu > Computer > System Properties >
+    Advanced System Properties</strong>. Then open <strong>Advanced tab > Environment
+    Variables</strong> and add a new system variable <code>JAVA_HOME</code> that points to
+    your JDK folder, for example <code>C:\Program Files\Java\jdk1.8.0_77</code>.</p>
+  </p>
+  </li>
+</ol>
+
+<p>That's it!
+The following video shows each step of the recommended setup procedure.</p>
+
+<video controls style="margin:20px 0" onclick="this.play()">
+  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-windows.mp4" type="video/mp4">
+</video>
+
+<p>As new tools and other APIs become available, Android Studio tells you
+with a pop-up, or you can check for updates by clicking <strong>Help &gt;
+Check for Update</strong>.</p>
 
 
-<p>Before installing Android Studio, make sure you have JDK 6 or higher installed&mdash;the JRE
-alone is not sufficient. When developing for Android 5.0 (API level 21) and higher, you will need to install JDK 7.
-To check if you have the correct version of the JDK installed, open a terminal and type <code>javac -version</code>.
-If the JDK is not available or the version is lower than version 6, download the
-<a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html" class="external-link"
->Java SE Development Kit 7</a>.</p>
-
-
-<div class="procedure-box">
-
-<p id="instructions-toggle"
-style="float:right;font-size:13px"><a href='' onclick='showAll();return false;'
->[ Show instructions for all platforms ]</a></p>
-
-<div class="win docs" style="display:none">
-
-<p><b>To set up Android Studio on Windows:</b></p>
-  <ol>
-    <li>Launch the {@code .exe} file you downloaded.</li>
-    <li>Follow the setup wizard to install Android Studio and any necessary SDK tools.
-
-    <p>On some Windows systems, the launcher script does not find where the JDK is installed.
-      If you encounter this problem,
-      you need to set an environment variable indicating the correct location.</p>
-      <p>Select <strong>Start menu > Computer > System Properties >
-      Advanced System Properties</strong>. Then open <strong>Advanced tab > Environment
-      Variables</strong> and add a new system variable <code>JAVA_HOME</code> that points to
-      your JDK folder, for example <code>C:\Program Files\Java\jdk1.7.0_21</code>.</p>
-    </p>
-    </li>
-  </ol>
-
-
-<p>The individual tools and other SDK packages used by Android Studio are installed in a separate
-directory. If you need to access the tools directly, use a terminal to navigate to the location
-where they are installed. For example:</p>
-<p><code>\Users\&lt;user&gt;\sdk\</code></p>
+</div>
+<!-- end windows -->
 
 
 
-</div><!-- end windows -->
+<!-- #### MAC INSTRUCTIONS #### -->
+
+<div id="system-mac" style="display:none">
+
+<p>There are, however, known stability issues in Android Studio on Mac
+when using JDK 1.8. Until these issues are resolved, you can improve stability
+by downgrading your JDK to an older version (but no lower than JDK 1.6).</p>
+
+<p>To install Android Studio on your Mac, proceed as follows:</p>
+
+<ol>
+  <li>Launch the Android Studio DMG file.</li>
+  <li>Drag and drop Android Studio into the Applications folder, then launch
+    Android Studio.</li>
+  <li>Select whether you want to import previous Android Studio settings,
+    then click <strong>OK</strong>.</li>
+  <li>The Android Studio Setup Wizard guides you though the rest of the
+    setup, which includes downloading Android SDK components
+    that are required for development.</li>
+</ol>
+
+<p>That's it!
+The following video shows each step of the recommended setup procedure.</p>
+
+<video controls style="margin:20px 0" onclick="this.play()">
+  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-mac.mp4" type="video/mp4">
+</video>
+
+<p>
+As new tools and other APIs become available, Android Studio tells you
+with a pop-up, or you can check for updates by clicking <strong>Android Studio
+&gt; Check for Updates</strong>.</p>
+
+</div>
+<!-- end mac -->
 
 
-<div class="mac docs" style="display:none">
 
-<p><b>To set up Android Studio on Mac OSX:</b></p>
-  <ol>
-    <li>Launch the {@code .dmg} file you downloaded.</li>
-    <li>Drag and drop Android Studio into the Applications folder.
-    <li>Open Android Studio and follow the setup wizard to install any necessary SDK tools.
-    </li>
-  </ol>
+<!-- #### LINUX INSTRUCTIONS #### -->
 
-<p>If you need to use the Android SDK tools from a command line,
-you can access them at:</p>
-<p><code>/Users/&lt;user>/Library/Android/sdk/</code></p>
+<div id="system-linux" style="display:none">
 
 
-</div><!-- end mac -->
+<p>To install Android Studio on Linux, proceed as follows:</p>
 
+<ol>
+  <li>Unpack the <code>.zip</code> file you downloaded to an
+      appropriate location for your applications, such as within
+      <code>/usr/local/</code> for your user profile, or <code>/opt/</code>
+      for shared users.
+  <li>To launch Android Studio, open a terminal,
+    navigate to the <code>android-studio/bin/</code> directory,
+   and execute <code>studio.sh</code>.
+    <p><strong>Tip:</strong>
+    Add <code>android-studio/bin/</code> to your <code>PATH</code> environment
+    variable so you can start Android Studio from any directory.</p>
+  </li>
+  <li>Select whether you want to import previous Android Studio settings
+    or not, then click <strong>OK</strong>.</li>
+  <li>The Android Studio Setup Wizard guides you though the rest of the
+    setup, which includes downloading Android SDK components
+    that are required for development.</li>
+  </li>
+</ol>
 
-<div class="linux docs" style="display:none">
+<div class="note">
+<p><strong>Note:</strong>
+If you are running a 64-bit version of Ubuntu, you need to install some 32-bit
+libraries with the following command:</p>
+<pre>sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6</pre>
+<p>If you are running 64-bit Fedora, the command is:</p>
+<pre>sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686</pre>
+</div>
 
-<p><b>To set up Android Studio on Linux:</b></p>
+<p>That's it!
+The following video shows each step of the recommended setup procedure.</p>
 
-  <ol>
-    <li>Unpack the {@code .zip} file you downloaded to an
-        appropriate location for your applications.
-    <li>To launch Android Studio, open a terminal, navigate to the {@code android-studio/bin/} directory,
-     and execute {@code studio.sh}.
-      <p>You may want to add {@code android-studio/bin/} to your PATH environmental
-      variable so that you can start Android Studio from any directory.</p>
-    </li>
-    <li>If the SDK is not already installed, follow the setup wizard to install the SDK and any
-    necessary SDK tools.
-    <p class="note"><strong>Note:</strong> To support 32-bit apps
-    on a 64-bit machine, you will need to install the ia32-libs,
-    lib32ncurses5-dev, and lib32stdc++6 packages.</p>
-    </li>
-  </ol>
+<video controls style="margin:20px 0" onclick="this.play()">
+  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-linux.mp4" type="video/mp4">
+</video>
+
+<p>As new tools and other APIs become available, Android Studio tells you
+with a pop-up, or you can check for updates by clicking <strong>Help &gt;
+Check for Update</strong>.</p>
 
 </div><!-- end linux -->
-</div><!-- end procedure box -->
 
-<p>You can now start developing apps in Android Studio! Later on, you may want to add packages or
-update them.</p>
+<p class="note"><strong>Note:</strong>
+If you want to develop apps with the N Preview SDK, you must use
+the preview version of Android Studio 2.1. For more information, see the
+<a href="{@docRoot}preview/setup-sdk.html">N Preview setup guide</a>.</p>
 
-<p class="paging-links">
-<a href="{@docRoot}sdk/installing/adding-packages.html" class="next-page-link">
-Optional: Adding SDK Packages</a></p>
 
 
+<h2>Start building apps</h2>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-2of6">
+<img src="{@docRoot}images/tools/studio/ic_devices_grey.png"
+  style="width:100%;background:#eee;margin:0" />
+<h3>Build your first app</h3>
+<p>Get started quickly and learn the basics of Android by following
+the guide to <strong><a href="{@docRoot}training/basics/firstapp/index.html"
+>Building Your First App</a></strong>.</p>
+
 </div>
-<!-- ################    END STUDIO    ##################### -->
-
-
-
-
-
-
-
-
-
-<!-- ################    JUST SDK TOOLS    ##################### -->
-<div id="tools" heading="Installing the Stand-alone SDK Tools" style="display:none">
-
-
-<p>The stand-alone SDK Tools package does not include a complete Android development environment.
-It includes only the core SDK tools, which you can access from a command line or with a plugin
-for your favorite IDE (if available).</p>
-
-<p class="note"><strong>Note:</strong> If you have not yet downloaded the SDK tools, <a href="{@docRoot}sdk/index.html#Other"
-><b>download</b></a> them now. For a complete IDE and Android SDK package, we recommend <a href="{@docRoot}sdk/index.html"
-><b>downloading Android Studio</b></a>.</p>
-
-
-<div class="procedure-box">
-<p id="instructions-toggle"
-style="float:right;font-size:13px"><a href='' onclick='showAll();return false;'
->[ Show instructions for all platforms ]</a></p>
-
-<div class="win docs" style="display:none">
-
-<p><b>To get started on Windows:</b></p>
-
-<p>Your download package is an executable file that starts an installer. The installer checks your machine
-  for required tools, such as the proper Java SE Development Kit (JDK), and installs them if necessary.
-  The installer then saves the Android SDK Tools to a specified location.</p>
-
-<ol>
-<li>Double-click the {@code .exe} file to start the install.</li>
-<li>Make a note of the name and location where you saved the SDK on your system&mdash;you will need to
-refer to them later when using
-the SDK tools from the command line.</li>
-<li>Once the installation completes, the installer starts the Android SDK Manager.
-</li>
-</ol>
+<div class="col-2of6">
+<img src="{@docRoot}images/tools/studio/ic_school_grey.png"
+  style="width:100%;background:#eee;margin:0" />
+<h3>Learn with Udacity</h3>
+<p>Ramp up on Android with interactive video training in the
+<strong><a href="https://www.udacity.com/course/developing-android-apps--ud853">Android Fundamentals Udacity course</a></strong>.</p>
 
 </div>
-
-
-
-<div class="mac docs" style="display:none">
-
-<p><b>To get started on Mac OSX:</b></p>
-
-<ol>
-<li>Unpack the {@code .zip} file you downloaded. By default, the file is unpacked
-into a directory named <code>android-sdk-mac_x86</code>.</li>
-<li>Move the directory to an appropriate location on your
-machine, such as a "Development" directory in your home directory.</li>
-<li>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
-refer to them later when using the SDK tools from the command line.</li>
-</ol>
+<div class="col-2of6">
+<img src="{@docRoot}images/tools/studio/ic_explore_grey.png"
+  style="width:100%;background:#eee;margin:0" />
+<h3>Explore Studio</h3>
+<p>Discover powerful Android Studio features and developer strategies in the
+<strong><a href="{@docRoot}tools/studio/index.html">Android Studio Introduction</a></strong>.</p>
 
 </div>
-
-
-
-
-<div class="linux docs" style="display:none">
-
-<p><b>To get started on Linux:</b></p>
-
-<ol>
-<li>Unpack the {@code .tgz} file you downloaded.</li>
-<li>Make a note of the name and location of the unpacked SDK directory on your system&mdash;you will need to
-refer to them later when using the SDK tools from the command line.</li>
-</ol>
-
-<h5 id="Troubleshooting" style="margin-bottom:15px"><a href='' class="expandable"
-  onclick="toggleExpandable(this,'#UbuntuTrouble');return false;"
-  >Troubleshooting Ubuntu</a></h5>
-
-<div id="UbuntuTrouble" style="display:none">
-<ul>
-  <li>If you need help installing and configuring Java on your
-    development machine, you might find these resources helpful:
-    <ul>
-      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
-      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
-    </ul>
-  </li>
-  <li>Here are the steps to install Java:
-    <ol>
-      <li><p>If you are running a 64-bit distribution on your development
-      machine, you need to install additional packages first. For Ubuntu 13.10 (Saucy Salamander)
-      and above, install the <code>libncurses5:i386</code>, <code>libstdc++6:i386</code>, and
-      <code>zlib1g:i386</code> packages using <code>apt-get</code>:</p>
-      <pre class="no-pretty-print">sudo dpkg --add-architecture i386
-sudo apt-get update
-sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386</pre>
-      <p>For earlier versions of Ubuntu, install the <code>ia32-libs</code> package using
-      <code>apt-get</code>:</p>
-      <pre class="no-pretty-print">apt-get install ia32-libs</pre>
-      </li>
-      <li>Next, install Java: <pre class="no-pretty-print">apt-get install sun-java6-jdk</pre></li>
-    </ol>
-  </li>
-</ul>
-</div><!-- end ubuntu trouble -->
-
-
-</div><!-- end linux -->
-</div><!-- end procedure box -->
-
-
-<p>Before you can begin developing apps with the Android SDK tools, you must install a few
-additional packages.</p>
-
-<p class="paging-links">
-<a href="{@docRoot}sdk/installing/adding-packages.html" class="next-page-link">
-Continue: Adding SDK Packages</a></p>
-
-
-</div>
-<!-- ################    END JUST TOOLS    ##################### -->
-
-
-
-
-
-
-
-
-
-
-<!-- ################    DEFAULT    ##################### -->
-
-
-<div id="default" style="display:none">
-
-<p>Select the SDK bundle you want to install:</p>
-
-<div class="cols" style="margin:30px 0 60px">
-
-<div class="col-4">
-<a href="{@docRoot}sdk/installing/index.html?pkg=studio" class="landing-button landing-secondary">
-Android Studio
-</a>
-</div>
-
-<div class="col-4">
-<a href="{@docRoot}sdk/installing/index.html?pkg=tools" class="landing-button landing-secondary">
-Stand-alone SDK Tools
-</a>
-</div>
-</div>
-
-<p></p>
-
-<div>
-<p></p>
-
-</div>
-
-</div>
-<!-- ################    END DEFAULT    ##################### -->
-
-
-
-
+</div><!-- end cols -->
 
 
 <script>
-
-// Show proper instructions based on downloaded SDK package
-var package = getUrlParam("pkg");
-if (package == "tools") {
-  // Show the SDK Tools (other IDE) instructions
-  $("h1").text($("#tools").attr('heading'));
-  $("#tools").show();
-} else if (package == "studio") {
-  // Show the Android Studio instructions
-  $("h1").text($("#studio").attr('heading'));
-  $("#studio").show();
-} else {
-  // Show the default page content so user can select their setup
-  $("#default").show();
-}
-
-// Show the proper instructions based on machine OS
-var $osDocs;
-if (navigator.appVersion.indexOf("Win")!=-1) {
-  $osDocs = $('.win');
-} else if (navigator.appVersion.indexOf("Mac")!=-1) {
-  $osDocs = $('.mac');
-} else if (navigator.appVersion.indexOf("Linux")!=-1) {
-  $osDocs = $('.linux');
-}
-
-if ($osDocs.length) {
-  // reveal only the docs for this OS
-  $osDocs.show();
-} else {
-  // not running a compatible OS, so just show all the docs
-  $('.docs').show();
-}
-
-
-/* Shows all the machine OS instructions */
-function showAll() {
-  $('.docs').show();
-  $("#instructions-toggle").hide();
-}
-
-/* Returns the value for the given URL parameter */
-function getUrlParam(param) {
-  var url = window.location.search.substring(1);
-  var variables = url.split('&');
-  for (var i = 0; i < variables.length; i++) {
-    var paramName = variables[i].split('=');
-    if (escape(paramName[0]) == param) {
-      return escape(paramName[1]);
-    }
+/** Show the appropriate instructions for user **/
+function showInstructions(system) {
+  $("[id^=system-]").hide(); // hide all of them first
+  if (system == "linux") {
+    $("#system-linux").show();
+  } else if (system == "mac") {
+    $("#system-mac").show();
+  } else {
+    $("#system-windows").show();
   }
+  $("select#instructions-option").val(system);
 }
 
-/* direct link to ubuntu troubleshooting */
-if ( document.location.href.indexOf('#UbuntuTrouble') > -1 ) {
-  $(".linux.docs").show();
-  toggleExpandable(this,'#UbuntuTrouble');
+// Get operating system based on the user agent, default windows
+var os = "windows";
+if (navigator.appVersion.indexOf("Linux")!=-1) {
+  os = "linux";
+} else if (navigator.appVersion.indexOf("Mac")!=-1) {
+  os = "mac";
 }
+showInstructions(os);
 </script>
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
index 113388f..4cd6f8c 100644
--- a/docs/html/sdk/installing/studio-tips.jd
+++ b/docs/html/sdk/installing/studio-tips.jd
@@ -1,7 +1,8 @@
 page.title=Android Studio Tips and Tricks
 page.image=images/tools/studio-previewall.png
-page.tags="sdk", "studio", "android studio"
-meta.tags="studio"
+page.metaDescription=Tips to help you get started with Android Studio's most common tasks and productivity enhancements.
+page.tags=studio,tips
+meta.tags="studio", "tools"
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/sdk/sdk_vars.cs b/docs/html/sdk/sdk_vars.cs
index eb61447..9f220d7 100644
--- a/docs/html/sdk/sdk_vars.cs
+++ b/docs/html/sdk/sdk_vars.cs
@@ -1,26 +1,27 @@
 <?cs
-set:studio.version='1.5.1.0' ?><?cs
+set:studio.version='2.0.0.20' ?><?cs
+set:studio.release.date='April 7, 2016' ?><?cs
 
 
-set:studio.linux_bundle_download='android-studio-ide-141.2456560-linux.zip' ?><?cs
-set:studio.linux_bundle_bytes='380943097' ?><?cs
-set:studio.linux_bundle_checksum='b8460a2197abe26979d88e3b01b3c8bfd80a37db' ?><?cs
+set:studio.linux_bundle_download='android-studio-ide-143.2739321-linux.zip' ?><?cs
+set:studio.linux_bundle_bytes='292106971' ?><?cs
+set:studio.linux_bundle_checksum='b64070ee4ec4868e9dd942b56f76864634cb0c67' ?><?cs
 
-set:studio.mac_bundle_download='android-studio-ide-141.2456560-mac.dmg' ?><?cs
-set:studio.mac_bundle_bytes='367456698' ?><?cs
-set:studio.mac_bundle_checksum='d0807423985757195ad5ae4717d580deeba1dbd8' ?><?cs
+set:studio.mac_bundle_download='android-studio-ide-143.2739321-mac.dmg' ?><?cs
+set:studio.mac_bundle_bytes='292574501' ?><?cs
+set:studio.mac_bundle_checksum='0f3d53a08815c00912c13738abc79e82207b20ed' ?><?cs
 
-set:studio.win_bundle_download='android-studio-ide-141.2456560-windows.zip' ?><?cs
-set:studio.win_bundle_bytes='375635150' ?><?cs
-set:studio.win_bundle_checksum='64882fb967f960f2142de239200104cdc9b4c75b' ?><?cs
+set:studio.win_bundle_download='android-studio-ide-143.2739321-windows.zip' ?><?cs
+set:studio.win_bundle_bytes='294612422' ?><?cs
+set:studio.win_bundle_checksum='705c00f52b715d6a845c97979ced6f9b1b3f11c6' ?><?cs
 
-set:studio.win_bundle_exe_download='android-studio-bundle-141.2456560-windows.exe' ?><?cs
-set:studio.win_bundle_exe_bytes='1209163328' ?><?cs
-set:studio.win_bundle_exe_checksum='6ffe608b1dd39041a578019eb3fedb5ee62ba545' ?><?cs
+set:studio.win_bundle_exe_download='android-studio-bundle-143.2739321-windows.exe' ?><?cs
+set:studio.win_bundle_exe_bytes='1223633080' ?><?cs
+set:studio.win_bundle_exe_checksum='c556debf40de6b5d6f6d65d169a64398e3380183' ?><?cs
 
-set:studio.win_notools_exe_download='android-studio-ide-141.2456560-windows.exe' ?><?cs
-set:studio.win_notools_exe_bytes='351419656' ?><?cs
-set:studio.win_notools_exe_checksum='8d016b90bf04ebac6ce548b1976b0c8a4f46b5f9' ?><?cs
+set:studio.win_notools_exe_download='android-studio-ide-143.2739321-windows.exe' ?><?cs
+set:studio.win_notools_exe_bytes='277789224' ?><?cs
+set:studio.win_notools_exe_checksum='3e8c25bd7b7f3aa326f7b2a349c4d67c550d13ac' ?><?cs
 
 
 set:sdk.linux_download='android-sdk_r24.4.1-linux.tgz' ?><?cs
@@ -54,3 +55,8 @@
 set:ndk.win32_bytes='728899082' ?><?cs
 set:ndk.win32_checksum='ff939bde6cd374eecbd2c3b2ad218697f9a5038c'
 ?>
+<?cs
+def:size_in_mb(bytes)
+  ?><?cs set:mb = bytes / 1024 / 1024
+  ?><?cs var:mb ?><?cs
+/def ?>
diff --git a/docs/html/tools/building/building-studio.jd b/docs/html/tools/building/building-studio.jd
index 2e3615e..8da70c0 100644
--- a/docs/html/tools/building/building-studio.jd
+++ b/docs/html/tools/building/building-studio.jd
@@ -7,10 +7,34 @@
   <div id="qv">
     <h2>In this document</h2>
       <ol>
-        <li><a href="#run-configuration">Changing the run configuration</a> </li>
-        <li><a href="#changing-variant">Changing build variants</a></li>
-        <li><a href="#gradle-console">Monitoring the build process</a></li>
-        <li><a href="#generating-apks">Generating APKs</a></li>
+        <li>
+          <a href="#run-configuration">Changing the run configuration</a>
+        </li>
+
+        <li>
+          <a href="#changing-variant">Changing build variants</a>
+        </li>
+
+        <li>
+          <a href="#gradle-console">Monitoring the build process</a>
+        </li>
+
+        <li>
+          <a href="#generating-apks">Generating APKs</a>
+        </li>
+
+        <li>
+          <a href="#instant-run">About Instant Run</a>
+          <ol>
+            <li>
+              <a href="#set-up-ir">Configuring and optimizing your project for Instant Run</a>
+            </li>
+
+            <li>
+              <a href="#ir-limitations">Limitations of Instant Run</a>
+            </li>
+          </ol>
+        </li>
       </ol>
 
     <h2>See also</h2>
@@ -31,7 +55,9 @@
 
 <p>
   By default, Android Studio sets up new projects to deploy to the Emulator or
-  a physical device with just a few clicks.
+  a physical device with just a few clicks. With Instant Run, you can push
+  changes to methods and existing app resources to a running app without
+  building a new APK, so code changes are visible almost instantly.
 </p>
 
 <p>
@@ -138,8 +164,8 @@
 </h3>
 
 <p>
-  You can view details about the build process by clicking <em>Gradle
-  Console</em> <img src="{@docRoot}images/tools/as-gradlebutton.png" alt=""
+  You can view details about the build process by clicking <strong>Gradle
+  Console</strong> <img src="{@docRoot}images/tools/as-gradlebutton.png" alt=""
   style="vertical-align:bottom;margin:0;">. The console displays each
   task that Gradle executes in order to build your app, as shown in figure 1.
 </p>
@@ -160,7 +186,40 @@
 
 <p>
   If an error occurs during the build process, the <em>Messages</em> window
-  will appear to describe the issue.
+  appears to describe the issue. Gradle may recommend some command-line
+  options to help you resolve the issue, such as <code>--stacktrace</code> or
+  <code>--debug</code>. To use command-line options with your build process:
+</p>
+
+<ol>
+  <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
+  dialog:
+    <ul>
+      <li>On Windows or Linux, select <strong>File</strong> &gt;
+      <strong>Settings</strong> from the main menu.
+      </li>
+
+      <li>On Mac OSX, select <strong>Android Studio</strong> &gt;
+      <strong>Preferences</strong> from the main menu.
+      </li>
+    </ul>
+  </li>
+
+  <li>Navigate to <strong>Build, Execution, Deployment</strong> &gt;
+  <strong>Compiler</strong>.
+  </li>
+
+  <li>In the text field next to <em>Command-line Options</em>, enter your
+  command-line options.
+  </li>
+
+  <li>Click <strong>OK</strong> to save and exit.
+  </li>
+</ol>
+
+<p>
+  Gradle will apply these command-line options the next time you try building
+  your app.
 </p>
 
 <h3 id="generating-apks">
@@ -184,4 +243,503 @@
 <p class="img-caption">
   <strong>Figure 2.</strong> Click the link to locate the generated APK
   files.
-</p>
\ No newline at end of file
+</p>
+
+<h2 id="instant-run">About Instant Run</h3>
+
+<p>
+  Introduced in Android Studio 2.0, Instant Run is a behavior for the
+  <strong>Run</strong> <img src="{@docRoot}images/tools/as-run.png" alt=""
+  style="vertical-align:bottom;margin:0;"> and <strong>Debug</strong> <img src=
+  "{@docRoot}images/tools/as-debugbutton.png" alt="" style=
+  "vertical-align:bottom;margin:0;"> commands that significantly reduces the
+  time between updates to your app. Although your first build may take longer
+  to complete, Instant Run pushes subsequent updates to your app without
+  building a new APK, so changes are visible much more quickly.
+</p>
+
+<p>
+  Instant Run is supported only when you deploy the debug build variant, use
+  Android Plugin for Gradle version 2.0.0 or higher, and set
+  <code>minSdkVersion</code> to 15 or higher in your app's module-level
+  <code>build.gradle</code> file. For the best performance, set
+  <code>minSdkVersion</code> to 21 or higher.
+</p>
+
+<p>
+  After deploying an app, a small, yellow thunderbolt icon appears within the
+  <strong>Run</strong> <img src=
+  "{@docRoot}images/tools/instant-run/as-irrun.png" alt="" style=
+  "vertical-align:bottom;margin:0;"> button (or <strong>Debug</strong>
+  <img src="{@docRoot}images/tools/instant-run/as-irdebug.png" alt="" style=
+  "vertical-align:bottom;margin:0;"> button), indicating that Instant Run is
+  ready to push updates the next time you click the button. Instead of building
+  a new APK, it pushes just those new changes and, in some cases, the app
+  doesn't even need to restart but immediately shows the effect of those code
+  changes.
+</p>
+
+<p>
+  Instant Run pushes updated code and resources to your connected device or
+  emulator by performing a <em>hot swap</em>, <em>warm swap</em>, or <em>cold
+  swap</em>. It automatically determines the type of swap to perform based on
+  the type of change you made. The following table describes how Instant Run
+  behaves when you push certain code changes to a target device.
+</p>
+
+<table id="ir-table">
+  <col width="40%">
+  <tr>
+    <th scope="col">
+      Code Change
+    </th>
+    <th scope="col">
+      Instant Run Behavior
+    </th>
+  </tr>
+
+  <tr id="hot-swap">
+    <td>
+      <ul>
+        <li>Change implementation code of an existing method
+        </li>
+      </ul>
+    </td>
+    <td>
+      <p>
+        Supported with <strong>hot swap</strong>: This is the
+        fastest type of swap and makes changes visible much more quickly. Your
+        application keeps running and a stub method with the new implementation is used
+        the next time the method is called.
+      </p>
+
+      <p>
+        Hot swaps do not re-initialize objects in your running app. You may need to
+        restart the current activity, or <a href="#rerun">restart the app</a>, before
+        you see certain updates. By default, Android Studio automatically restarts the
+        current activity after performing a hot swap. If you do not want this behavior,
+        you can <a href="#activity-restart">disable automatic activity restarts</a>.
+      </p>
+    </td>
+  </tr>
+
+  <tr id="warm-swap">
+    <td>
+      <ul>
+        <li>Change or remove an existing resource
+        </li>
+      </ul>
+    </td>
+    <td>
+      Supported with <strong>warm swap</strong>: This swap
+      is still very fast, but Instant Run must restart the current activity when it
+      pushes the changed resources to your app. Your app keeps running, but a small
+      flicker may appear on the screen as the activity restarts—this is normal.
+    </td>
+  </tr>
+
+  <tr id="cold-swap">
+    <td>
+      Structural code changes, such as:
+      <ul>
+        <li>Add, remove, or change:
+          <ul>
+            <li>an annotation
+            </li>
+
+            <li>an instance field
+            </li>
+
+            <li>a static field
+            </li>
+
+            <li>a static method signature
+            </li>
+
+            <li>an instance method signature
+            </li>
+          </ul>
+        </li>
+
+        <li>Change which parent class the current class inherits from
+        </li>
+
+        <li>Change the list of implemented interfaces
+        </li>
+
+        <li>Change a class's static initializer
+        </li>
+
+        <li>Reorder layout elements that use dynamic resource IDs
+        </li>
+      </ul>
+    </td>
+    <td>
+      <p>
+        Supported with <strong>cold swap</strong> (API level 21 or higher): This swap
+        is a bit slower because, although a new APK is not required, Instant Run must
+        restart the whole app when it pushes structural code changes.
+      </p>
+
+      <p>
+        For target devices running API level 20 or lower, Android Studio
+        deploys a full APK.
+      </p>
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <ul>
+        <li>Change the app manifest
+        </li>
+
+        <li>Change resources reference by the app manifest
+        </li>
+
+        <li>Change an Android widget UI element (requires a <a href="#rerun">
+          Clean and Rerun</a>)
+        </li>
+      </ul>
+    </td>
+    <td>
+      <p>
+        When making changes to the app's manifest or resources referenced by the
+        manifest, Android Studio automatically <strong>deploys a new build</strong>
+        in order to apply these changes. This is because certain information about
+        the app, such as its name, app icon resources, and intent filters, are
+        determined from the manifest when the APK is installed on the device.
+      </p>
+
+      <p>
+        If your build process automatically updates any part of the app manifest,
+        such as automatically iterating <code>versionCode</code> or
+        <code>versionName</code>, you will not be able to benefit from the full
+        performance of Instant Run. We recommend that you disable automatic updates
+        to any part in the app manifest in your debug build variants.
+      </p>
+    </td>
+  </tr>
+</table>
+
+<p class="note">
+  <strong>Note:</strong> If you need to restart your app after a crash, do not
+  launch it from your target device. Restarting your app from your target
+  device does not apply any of your code changes since the last cold swap or
+  <em>incremental build</em>. To launch your app with all your recent changes,
+  click <strong>Run</strong> <img src="{@docRoot}images/tools/as-run.png" alt=
+  "" style="vertical-align:bottom;margin:0;"> (or <strong>Debug</strong>
+  <img src="{@docRoot}images/tools/as-debugbutton.png" alt="" style=
+  "vertical-align:bottom;margin:0;">) from Android Studio.
+</p>
+
+<h4 id="rerun">
+  Using Rerun
+</h4>
+
+<p>
+  When pushing code changes that affect certain initializers, such as changes
+  to an app's {@link android.app.Application#onCreate onCreate()} method, you
+  need to restart your app for the changes to take effect. To perform an
+  <em>incremental build</em> and restart the app, click <strong>Rerun</strong>
+  <img src="{@docRoot}images/tools/as-restart.png" alt="" style=
+  "vertical-align:bottom;margin:0;">.
+</p>
+
+<p>
+  If you need to deploy a <em>clean build</em>, select <strong>Run</strong>
+  &gt; <strong>Clean and Rerun 'app'</strong> <img src=
+  "{@docRoot}images/tools/as-cleanrerun.png" alt="" style=
+  "vertical-align:bottom;margin:0;"> from the main menu, or hold down the
+  <strong>Shift</strong> key while clicking <strong>Rerun</strong> <img src=
+  "{@docRoot}images/tools/as-restart.png" alt="" style=
+  "vertical-align:bottom;margin:0;">. This action stops the running app,
+  performs a full clean build, and deploys the new APK to your target device.
+</p>
+
+<h4 id="activity-restart">
+  Disabling automatic activity restart
+</h4>
+
+<p>
+  When performing a hot swap, your app keeps running but Android Studio
+  automatically restarts the current activity. To disable this default setting:
+</p>
+
+<ol>
+  <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
+  dialog:
+    <ul>
+      <li>On Windows or Linux, select <strong>File</strong> &gt;
+      <strong>Settings</strong> from the main menu.
+      </li>
+
+      <li>On Mac OSX, select <strong>Android Studio</strong> &gt;
+      <strong>Preferences</strong> from the main menu.
+      </li>
+    </ul>
+  </li>
+
+  <li>Navigate to <strong>Build, Execution, Deployment</strong> &gt;
+  <strong>Instant Run</strong>.
+  </li>
+
+  <li>Uncheck the box next to <strong>Restart activity on code
+  changes</strong>.
+  </li>
+</ol>
+
+<p>
+  If automatic activity restart is disabled, you can manually restart the current
+  activity from the menu bar by selecting <strong>Run</strong> &gt; <strong>Restart
+  Activity</strong>.
+</p>
+
+<h3 id="set-up-ir">
+  Configuring and optimizing your project for Instant Run
+</h3>
+
+<p>
+  Android Studio enables Instant Run by default for projects built using
+  Android Plugin for Gradle 2.0.0 and higher.
+</p>
+
+<p>
+  To update an existing project with the latest version of the plugin:
+</p>
+
+<ol>
+  <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
+  dialog.
+  </li>
+
+  <li>
+    <p>
+      Navigate to <strong>Build, Execution, Deployment</strong> &gt;
+      <strong>Instant Run</strong> and click <strong>Update Project</strong>,
+      as shown in figure 3.
+    </p>
+
+    <p>
+      If the option to update the project does not appear, it’s already
+      up-to-date with the latest Android Plugin for Gradle.
+    </p>
+
+    <img src="{@docRoot}images/tools/instant-run/update-project-dialog.png"
+    alt="" height="51">
+
+    <p class="img-caption">
+      <strong>Figure 3.</strong> Updating the Android Plugin for Gradle for an
+      existing project.
+    </p>
+  </li>
+</ol>
+
+<p>
+  You also need to <a href="#changing-variant">change the build variant</a> to
+  a debug version of your app to start using Instant Run.
+</p>
+
+<h4 id="configure-dexoptions">
+  Improve build times by configuring DEX resources
+</h4>
+
+<p>
+  When you deploy a clean build, Android Studio instruments your app to allow
+  Instant Run to push code and resource updates. Although updating the running
+  app happens much more quickly, the first build may take longer to complete.
+  You can improve the build process by configuring a few DEX options, such as
+  <code>maxProcessCount</code> and <code>javaMaxHeapSize</code>.
+</p>
+
+<dl>
+  <dt>
+    <code>maxProcessCount</code>
+  </dt>
+
+  <dd>
+    Sets the maximum number of DEX processes that can be started
+    concurrently. If the Gradle daemon is already running, you need to
+    stop the process before initializing it with a new maximum process count.
+    You can terminate the Gradle daemon by calling one of the following from
+    the <em>Terminal</em> window:
+    <ul>
+      <li>On Windows, call <code>gradlew --stop</code>
+      </li>
+
+      <li>On Linux/Mac OSX, call <code>./gradlew --stop</code>
+      </li>
+    </ul>
+  </dd>
+
+  <dt>
+    <code>javaMaxHeapSize</code>
+  </dt>
+
+  <dd>
+    Sets the maximum memory allocation pool size for the dex operation. When
+    passing a value, you can append the letter 'k' to indicate kilobytes, 'm'
+    to indicate megabytes, or 'g' to indicate gigabytes.
+  </dd>
+</dl>
+
+<p>
+  The following example sets <code>maxProcessCount</code> to 4 and
+  <code>javaMaxHeapSize</code> to "2g" in the module-level
+  <code>build.gradle</code> file:
+</p>
+
+<pre>
+android {
+  ...
+  dexOptions {
+    maxProcessCount 4
+    javaMaxHeapSize "2g"
+  }
+}
+</pre>
+
+<p>
+  You should experiment with these settings by incrementing their values and
+  observing the effect on your build times. You could experience a negative
+  impact to performance if you allocate too many resources to the DEX'ing process.
+</p>
+
+<h4 id="windows-defender">
+  Excluding your project from Windows Defender
+</h4>
+
+<p>
+  On Windows systems, Windows Defender may cause slowdowns while using Instant
+  Run. If you are using Windows Defender, you should <a class="external-link"
+  href=
+  "http://answers.microsoft.com/en-us/protect/wiki/protect_defender-protect_scanning/how-to-exclude-a-filefolder-from-windows-defender/f32ee18f-a012-4f02-8611-0737570e8eee">
+  exclude your Android Studio project folder from Windows Defender malware
+  scans</a>.
+</p>
+
+<h4 id="crashlytics">
+  Disabling Crashlytics for your debug build variant
+</h4>
+
+<p>
+  Using Crashlytics is known to cause slower build times. To improve build
+  performance while developing your app, you can <a class="external-link" href=
+  "https://docs.fabric.io/android/crashlytics/build-tools.html#disabling-crashlytics-for-debug-builds">
+  disable Crashlytics for your debug build variant</a>.
+</p>
+
+<h3 id="ir-limitations">
+  Limitations of Instant Run
+</h3>
+
+<p>
+  Instant Run is designed to speed up the build and deploy process in most
+  situations. However, there are some aspects to using Instant Run that might
+  affect its behavior and compatibility with your app. If you experience any
+  other issues while using Instant Run, please <a class="external-link" href=
+  "http://tools.android.com/filing-bugs">file a bug</a>.
+</p>
+
+<h4 id="multiple-devices">
+  Deploying to multiple devices
+</h4>
+
+<p>
+  Instant Run uses different techniques to perform hot, warm, and cold swaps
+  that are specific to the API level of the target device. For this reason,
+  while deploying an app to multiple devices at once, Android Studio
+  temporarily turns off Instant Run.
+</p>
+
+<h4 id="ir-multidex">
+  Multidexing your app
+</h4>
+
+<p>
+  If your project is configured for <a href=
+  "{@docRoot}tools/building/multidex.html#mdex-pre-l">Legacy Multidex</a>—that
+  is, when <code>build.gradle</code> is configured with <code>multiDexEnabled
+  true</code> and <code>minSdkVersion 20</code> or lower—and you deploy to
+  target devices running Android 4.4 (API level 20) or lower, Android Studio
+  disables Instant Run.
+</p>
+
+<p>
+  If <code>minSdkVersion</code> is set to 21 or higher, Instant Run
+  automatically configures your app for multidex. Because Instant Run only
+  works with the debug version of your app, you may need to <a href=
+  "{@docRoot}tools/building/multidex.html#mdex-gradle">configure your app for
+  multidex</a> when deploying your release build variant.
+</p>
+
+<h4 id="instrumented-tests">
+  Running instrumented tests and performance profilers
+</h4>
+
+<p>
+  Instrumented tests load both the debug APK and a test APK into the same
+  process on a test device, allowing control methods to override the normal
+  lifecycle of the app and perform tests. While running or debugging
+  instrumented tests, Android Studio does not inject the additional methods
+  required for Instant Run and turns the feature off.
+</p>
+
+<p>
+  While profiling an app, you should disable Instant Run. There is a small
+  performance impact when using Instant Run and a slightly larger impact when
+  overriding methods with a hot swap. This performance impact could interfere
+  with information provided by performance profiling tools. Additionally, the
+  stub methods generated with each hot swap can complicate stack traces.
+</p>
+
+<h4 id="plugins">
+  Using third-party plugins
+</h4>
+
+<p>
+  Android Studio temporarily disables the Java Code Coverage Library (JaCoCo)
+  and ProGuard while using Instant Run. Because Instant Run only works with
+  debug builds, this does not affect your release build.
+</p>
+
+<p>
+  Certain third-party plugins that perform bytecode enhancement may cause
+  issues with how Instant Run instruments your app. If you experience these
+  issues, but want to continue using Instant Run, you should disable those
+  plugins for your debug build variant. You can also help improve compatibility
+  with third-party plugins by <a class="external-link" href=
+  "http://tools.android.com/filing-bugs">filing a bug</a>.
+</p>
+
+<h4 id="multi-process-apps">
+  Pushing changes to multi-process apps
+</h4>
+
+<p>
+  Instant Run only instruments your app's main process in order to perform hot
+  swaps and warm swaps. When pushing code changes to other app processes, such
+  as changes to a method implementation or an existing resource, Instant Run
+  performs a <a href="#cold-swap">cold swap</a>.
+</p>
+
+<h4 id="disable-ir">
+  Disabling Instant Run
+</h4>
+
+<p>
+  To disable Instant Run:
+</p>
+
+<ol>
+  <li>Open the <strong>Settings</strong> or <strong>Preferences</strong>
+  dialog.
+  </li>
+
+  <li>Navigate to <strong>Build, Execution, Deployment</strong> &gt;
+  <strong>Instant Run</strong>.
+  </li>
+
+  <li>Uncheck the box next to <strong>Enable Instant Run</strong>.
+  </li>
+</ol>
\ No newline at end of file
diff --git a/docs/html/tools/building/multidex.jd b/docs/html/tools/building/multidex.jd
index e441a7c63..7d05fb9 100644
--- a/docs/html/tools/building/multidex.jd
+++ b/docs/html/tools/building/multidex.jd
@@ -1,4 +1,4 @@
-page.title=Building Apps with Over 65K Methods
+page.title=Building Apps with Over 64K Methods
 page.tags="65536","references","max","65k","dex","64k","multidex","multi-dex","methods"</p>
 
 @jd:body
@@ -8,14 +8,14 @@
     <h2>In this document</h2>
     <ol>
       <li><a href="#about">
-        About the 65K Reference Limit</a>
+        About the 64K Reference Limit</a>
         <ol>
           <li><a href="#mdex-pre-l">Multidex support prior to Android 5.0</a></li>
           <li><a href="#mdex-on-l">Multidex support for Android 5.0 and higher</a></li>
         </ol>
       </li>
       <li><a href="#avoid">
-        Avoiding the 65K Limit</a></li>
+        Avoiding the 64K Limit</a></li>
       <li><a href="#mdex-gradle">
         Configuring Your App for Multidex with Gradle</a>
         <ol>
@@ -82,45 +82,71 @@
 </p>
 
 
-<h2 id="about">About the 65K Reference Limit</h2>
+<h2 id="about">About the 64K Reference Limit</h2>
 
 <p>
-  Android application (APK) files contain executable bytecode files in the form of <a href=
-  "https://source.android.com/devices/tech/dalvik/">Dalvik</a> Executable (DEX) files, which
-  contain the compiled code used to run your app. The Dalvik Executable specification limits the
-  total number of methods that can be referenced within a single DEX file to 65,536, including
-  Android framework methods, library methods, and methods in your own code. Getting past this limit
-  requires that you configure your app build process to generate more than one DEX file, known as a
-  <em>multidex</em> configuration.
+  Android application (APK) files contain executable bytecode files in the form
+  of <a href="https://source.android.com/devices/tech/dalvik/">Dalvik</a>
+  Executable (DEX) files, which contain the compiled code used to run your app.
+  The Dalvik Executable specification limits the total number of methods that
+  can be referenced within a single DEX file to 65,536—including Android
+  framework methods, library methods, and methods in your own code. In the
+  context of computer science, the term <a class="external-link" href=
+  "https://en.wikipedia.org/wiki/Kilo-"><em>Kilo, K</em></a>, denotes 1024 (or
+  2^10). Because 65,536 is equal to 64 X 1024, this limit is referred to as the
+  '64K reference limit'.
 </p>
 
+<p>
+  Getting past this limit requires that you configure your app build process to
+  generate more than one DEX file, known as a <em>multidex</em> configuration.
+</p>
 
 <h3 id="mdex-pre-l">Multidex support prior to Android 5.0</h3>
 
 <p>
-  Versions of the platform prior to Android 5.0 use the Dalvik runtime for executing app code. By
-  default, Dalvik limits apps to a single classes.dex bytecode file per APK. In order to get around
-  this limitation, you can use the <a href="{@docRoot}tools/support-library/features.html#multidex">
-  multidex support library</a>, which becomes part of the primary DEX file of your app and then
+  Versions of the platform prior to Android 5.0 (API level 21) use the Dalvik
+  runtime for executing app code. By default, Dalvik limits apps to a single
+  classes.dex bytecode file per APK. In order to get around this limitation,
+  you can use the <a href=
+  "{@docRoot}tools/support-library/features.html#multidex">multidex support
+  library</a>, which becomes part of the primary DEX file of your app and then
   manages access to the additional DEX files and the code they contain.
 </p>
 
+<p class="note">
+  <strong>Note:</strong> If your project is configured for multidex with
+  <code>minSdkVersion 20</code> or lower, and you deploy to target devices
+  running Android 4.4 (API level 20) or lower, Android Studio disables <a href=
+  "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a>.
+</p>
 
 <h3 id="mdex-on-l">Multidex support for Android 5.0 and higher</h3>
 
 <p>
-  Android 5.0 and higher uses a runtime called ART which natively supports loading multiple dex
-  files from application APK files. ART performs pre-compilation at application install time which
-  scans for classes(..N).dex files and compiles them into a single .oat file for execution by the
-  Android device. For more information on the Android 5.0 runtime, see <a href=
-  "https://source.android.com/devices/tech/dalvik/art.html">Introducing ART</a>.
+  Android 5.0 (API level 21) and higher uses a runtime called ART which
+  natively supports loading multiple dex files from application APK files. ART
+  performs pre-compilation at application install time which scans for
+  classes(..N).dex files and compiles them into a single .oat file for
+  execution by the Android device. For more information on the Android 5.0
+  runtime, see <a href=
+  "https://source.android.com/devices/tech/dalvik/art.html">Introducing
+  ART</a>.
 </p>
 
+<p class="note">
+  <strong>Note:</strong> While using <a href=
+  "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a>,
+  Android Studio automatically configures your app for multidex when your app's
+  <code>minSdkVersion</code> is set to 21 or higher. Because Instant Run only
+  works with the debug version of your app, you still need to configure your
+  release build for multidex to avoid the 64K limit.
+</p>
 
-<h2 id="avoid">Avoiding the 65K Limit</h2>
+<h2 id="avoid">Avoiding the 64K Limit</h2>
 
 <p>
-  Before configuring your app to enable use of 65K or more method references, you should take steps
+  Before configuring your app to enable use of 64K or more method references, you should take steps
   to reduce the total number of references called by your app code, including methods defined by
   your app code or included libraries. The following strategies can help you avoid hitting the dex
   reference limit:
@@ -173,8 +199,9 @@
 </ul>
 
 <p>
-  Modify your app Gradle build file configuration to include the support library and enable
-  multidex output, as shown in the following Gradle build file snippet:
+  Modify the module-level <code>build.gradle</code> file configuration to
+  include the support library and enable multidex output, as shown in the
+  following code snippet:
 </p>
 
 <pre>
@@ -199,13 +226,6 @@
 }
 </pre>
 
-<p class="note">
-  <strong>Note:</strong> You can specify the <code>multiDexEnabled</code> setting in the
-  <code>defaultConfig,</code> <code>buildType</code>, or <code>productFlavor</code> sections of
-  your Gradle build file.
-</p>
-
-
 <p>
   In your manifest add the {@link android.support.multidex.MultiDexApplication} class from the
   multidex support library to the application element.
@@ -444,7 +464,7 @@
 dependencies {
     androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
          exclude group: 'com.android.support', module: 'multidex'
-    }       
+    }
 }
 </pre>
 </p>
diff --git a/docs/html/tools/data-binding/guide.jd b/docs/html/tools/data-binding/guide.jd
index b57fba7..8bbd833 100644
--- a/docs/html/tools/data-binding/guide.jd
+++ b/docs/html/tools/data-binding/guide.jd
@@ -1655,13 +1655,31 @@
 <h3 id="studio_support">Android Studio Support for Data Binding</h3>
 
 <p>
-Android Studio supports syntax highlighting of data binding expressions, and flags any expression
-language syntax errors in the editor.
-</p>
+Android Studio supports many of the code editing features for data binding code.
+For example, it supports the following features for data binding expressions:</p>
+<ul>
+<li>Syntax highlighting</li>
+<li>Flagging of expression language syntax errors</li>
+<li>XML code completion</li>
+<li>References, including <a class="external-link"
+href="https://www.jetbrains.com/help/idea/2016.1/navigation-in-source-code.html?origin=old_help">
+navigation</a> (such as navigate to a declaration) and
+<a class="external-link"
+href="https://www.jetbrains.com/help/idea/2016.1/viewing-inline-documentation.html?origin=old_help">
+quick documentation</a></li>
+</ul>
+
+<p class="note"><strong>Note:</strong> Arrays and a
+<a href="https://docs.oracle.com/javase/tutorial/java/generics/types.html"
+class="external-link">generic type</a>, such as the {@link
+android.databinding.Observable} class, might display
+errors when there are no errors.</p>
+
 <p>
-The Preview pane displays default values for data binding expressions if provided. In the following
-example excerpt of an element from a layout XML file, the Preview pane displays the
-{@code PLACEHOLDER} default text value in the <code>TextView</code>.
+The Preview pane displays default values for data binding expressions if
+provided. In the following
+example excerpt of an element from a layout XML file, the Preview pane displays
+the {@code PLACEHOLDER} default text value in the <code>TextView</code>.
 </p>
 
 <pre>
@@ -1671,8 +1689,11 @@
 </pre>
 
 <p>
-If you need to display a default value during the design phase of your project, you
-can also use tools attributes instead of default expression values, as described in
-<a class="external-link" href="http://tools.android.com/tips/layout-designtime-attributes">
+If you need to display a default value during the design phase of your project,
+you can also use tools attributes instead of default expression values, as
+described in
+<a class="external-link"
+href="http://tools.android.com/tips/layout-designtime-attributes">
 Designtime Layout Attributes</a>.
-</p>
\ No newline at end of file
+</p>
+
diff --git a/docs/html/tools/devices/emulator.jd b/docs/html/tools/devices/emulator.jd
index 5bdd4e2..319286e 100644
--- a/docs/html/tools/devices/emulator.jd
+++ b/docs/html/tools/devices/emulator.jd
@@ -1,4 +1,7 @@
-page.title=Using the Emulator
+page.title=Running Apps in the Android Emulator
+parent.title=Android Studio
+parent.link=index.html
+page.tags=emulator
 @jd:body
 
 <div id="qv-wrapper">
@@ -6,1568 +9,635 @@
 
   <h2>In this document</h2>
     <ol>
-      <li><a href="#overview">Overview</a></li>
-      <li><a href="#avds">Android Virtual Devices and the Emulator</a></li>
-      <li><a href="#starting">Starting and Stopping the Emulator</a></li>
-      <li><a href="#apps">Installing Applications on the Emulator</a></li>
-      <li><a href="#acceleration">Using Hardware Acceleration</a>
-        <ol>
-          <li><a href="#accel-graphics">Configuring Graphics Acceleration</a></li>
-          <li><a href="#accel-vm">Configuring Virtual Machine Acceleration</a></li>
-        </ol>
-      </li>
-      <li><a href="#sdcard">SD Card Emulation</a>
-        <ol>
-          <li><a href="#sdcard-creating">Creating an SD card image</a></li>
-          <li><a href="#sdcard-files">Copying files to an SD card image</a></li>
-          <li><a href="#sdcard-loading">Loading an SD card image</a></li>
-        </ol>
-      </li>
-      <li><a href="#diskimages">Working with Emulator Disk Images</a>
-	      <ol>
-	        <li><a href="#defaultimages">Default image files</a></li>
-	        <li><a href="#runtimeimages">Runtime images: user data and SD card</a></li>
-	        <li><a href="#temporaryimages">Temporary images</a></li>
-	      </ol>
-	    </li>
-      <li><a href="#emulatornetworking">Emulator Networking</a>
-	      <ol>
-          <li><a href="#networkaddresses">Network Address Space</a></li>
-          <li><a href="#networkinglimitations">Local Networking Limitations</a></li>
-          <li><a href="#redirection">Using Network Redirection</a></li>
-          <li><a href="#dns">Configuring the Emulator's DNS Settings</a></li>
-          <li><a href="#proxy">Using the Emulator with a Proxy</a></li>
-          <li><a href="#connecting">Interconnecting Emulator Instances</a></li>
-          <li><a href="#calling">Sending a Voice Call or SMS to Another Emulator Instance</a></li>
-        </ol>
-      </li>
-      <li><a href="#console">Using the Emulator Console</a>
-        <ol>
-          <li><a href="#portredirection">Port Redirection</a></li>
-          <li><a href="#geo">Geo Location Provider Emulation</a></li>
-          <li><a href="#events">Hardware Events Emulation</a></li>
-          <li><a href="#power">Device Power Characteristics</a></li>
-          <li><a href="#netstatus">Network Status</a></li>
-          <li><a href="#netdelay">Network Delay Emulation</a></li>
-          <li><a href="#netspeed">Network Speed Emulation</a></li>
-          <li><a href="#telephony">Telephony Emulation</a></li>
-          <li><a href="#sms">SMS Emulation</a></li>
-          <li><a href="#vm">VM State</a></li>
-          <li><a href="#window">Emulator Window</a></li>
-          <li><a href="#terminating">Terminating an Emulator Instance</a></li>
-        </ol>
-      </li>
-      <li><a href="#limitations">Emulator Limitations</a></li>
-      <li><a href="#troubleshooting">Troubleshooting Emulator Problems</a></li>
+      <li><a href="#about">About the Android Emulator</a></li>
+      <li><a href="#runningapp">Running an App in the Android Emulator</a></li>
+      <li><a href="#runningemulator">Launching the Android Emulator Without Running an App</a></li>
+      <li><a href="#navigate">Navigating on the Screen</a></li>
+      <li><a href="#tasks">Performing Basic Tasks in the Emulator</a></li>
+      <li><a href="#extended">Working With Extended Controls, Settings, and Help</a></li>
+
     </ol>
 
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}tools/help/emulator.html">Android Emulator</a></li>
-    <li><a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD Manager</a></li>
+    <li><a href="{@docRoot}tools/help/emulator.html">Android Emulator Command Line Features</a></li>
+    <li><a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with
+    AVD Manager</a></li>
   </ol>
+
 </div>
 </div>
 
-<p>The Android SDK includes a virtual mobile device emulator
-that runs on your computer. The emulator lets you prototype, develop and test
-Android applications without using a physical device. </p>
+<p>The Android Emulator simulates a device and displays it on your development
+computer. It lets you prototype, develop, and test
+Android apps without using a hardware device. The emulator supports Android
+phone, tablet, Android Wear, and Android TV devices. It comes with predefined
+device types
+so you can get started quickly, and you can create your own device definitions
+and emulator skins.</p>
 
-<p>The Android emulator mimics all of the hardware and software features
-of a typical mobile device, except that it cannot place actual phone
-calls. It provides a variety of navigation and control keys, which you can "press"
-using your mouse or keyboard to generate events for your application. It also
-provides a screen in which your application is displayed, together with any other
-active Android applications. </p>
+<p>The Android Emulator is fast,
+powerful, and feature-rich. It can transfer information faster than using
+a connected hardware device, speeding up the development process. The
+multi-core feature lets the emulator take advantage of multiple core
+processors on your development computer to improve emulator performance even
+more.</p>
 
-<img src="{@docRoot}images/emulator@2x.png"
-srcset="{@docRoot}images/emulator.png 1x, {@docRoot}images/emulator@2x.png 2x" alt=""
-  width="367" height="330"/>
+<img src="{@docRoot}images/tools/e-emulator.png" style="height:400px" alt="emulator"/>
 
-<p>To let you model and test your application more easily, the emulator utilizes
-Android Virtual Device (AVD) configurations. AVDs let you define certain hardware
-aspects of your emulated phone and allow you to create many configurations to test
-many Android platforms and hardware permutations. Once your application is running on
+<h2 id="about">About the Android Emulator</h2>
+
+<p>You can launch an app on the emulator when you run your project, or you can
+drag an APK file onto the emulator to install it. As with a hardware device,
+after you install an app
+on a virual device, it remains until you uninstall or replace it. If needed, you
+can test how multiple apps, such as your own or system apps, work with each
+other.</p>
+
+<h3 id="features">Features for trying out your apps</h3>
+
+<p>You interact with the emulator just as you would with a hardware device, but
+using your mouse and keyboard, and emulator buttons and controls.
+The emulator supports virtual hardware buttons and touchscreens, including
+two-finger operations,
+as well as directional pads (D-pads), trackballs, wheels, and various
+sensors. You can dynamically resize the emulator window as needed, zoom in and
+out, change the orientation, and even take a screenshot.</p>
+
+<p>When your app is running on
 the emulator, it can use the services of the Android platform to invoke other
-applications, access the network, play audio and video, store and retrieve data,
-notify the user, and render graphical transitions and themes. </p>
+apps, access the network, play audio and video, accept audio input,
+store and retrieve data, notify the user, and render graphical transitions and
+themes. The emulator has controls that let
+you easily send incoming phone calls and text messages, specify
+the location of the device, simulate fingerprint scans, specify network
+speed and status, and simulate battery properties. The emulator can
+simulate an SD card and internal data storage; you can drag a file, such as a
+graphics or data file, onto the emulator to store it.</p>
 
-<p>The emulator also includes a variety of debug capabilities, such as a console
-from which you can log kernel output, simulate application interrupts (such as
-arriving SMS messages or phone calls), and simulate latency effects and dropouts
-on the data network.</p>
+<h3 id="avds">Android Virtual Device configurations</h3>
 
-
-
-<h2 id="overview">Overview</h2>
-
-<p>The Android emulator is an application that provides a virtual
-mobile device on which you can run your Android applications. It runs a full
-Android system stack, down to the kernel level, that includes a set of
-preinstalled applications (such as the dialer) that you can access from your
-applications. You can choose what version of the Android system you want to
-run in the emulator by configuring AVDs, and you can also customize the
-mobile device skin and key mappings. When launching the emulator and at runtime,
-you can use a variety of commands and options to control its behavior.
-</p>
-
-<p>The Android system images available through the Android SDK Manager contain
-code for the Android Linux kernel, the native libraries, the Dalvik VM, and the
-various Android packages (such as the Android framework and preinstalled
-applications). The emulator provides dynamic binary translation of device
-machine code to the OS and processor architecture of your development
-machine.</p>
-
-<p>The Android emulator supports many hardware features likely to be found on
-mobile devices, including: </p>
-
-<ul>
-  <li>An ARMv5, ARMv7, or x86 CPU</li>
-  <li>A 16-bit LCD display</li>
-  <li>One or more keyboards (a Qwerty-based keyboard and associated Dpad/Phone
-buttons)</li>
-  <li>A sound chip with output and input capabilities</li>
-  <li>Flash memory partitions (emulated through disk image files on the
-development machine)</li>
-  <li>A GSM modem, including a simulated SIM Card</li>
-  <li>A camera, using a webcam connected to your development computer.</li>
-  <li>Sensors like an accelerometer, using data from a USB-connected Android device.</li>
-</ul>
-
-<p>The following sections describe the emulator and its use for development of Android
-applications in more detail.</p>
-
-
-<h2 id="avds">Android Virtual Devices and the Emulator</h2>
-
-<p>To use the emulator, you first must create one or more AVD configurations. In each
-configuration, you specify an Android platform to run in the emulator and the set of hardware
-options and emulator skin you want to use. Then, when you launch the emulator, you specify
-the AVD configuration that you want to load. </p>
+<p>The emulator uses an Android Virtual Device (AVD) configuration to determine
+the look, functionality, and system image of the simulated device. AVDs let you
+define certain hardware aspects of your emulated devices and allow you to create
+many configurations to test different Android platforms and hardware
+permutations.</p>
 
 <p>Each AVD functions as an independent device, with its own private storage for
-user data, SD card, and so on. When you launch the emulator with an AVD configuration,
-it automatically loads the user data and SD card data from the AVD directory. By default,
-the emulator stores the user data, SD card data, and cache in the AVD directory.</p>
+user data, SD card, and so on. When you launch the emulator with an AVD
+configuration, it automatically loads the user data and SD card data from the
+AVD directory. By default, the emulator stores the user data, SD card data, and
+cache in the AVD directory.</p>
 
-<p>To create and manage AVDs you use the AVD Manager UI or the <code>android</code> tool
-that is included in the SDK.
-For complete information about how to set up AVDs, see <a
-href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.</p>
+<p>To create and manage AVDs, use the
+<a href="{@docRoot}tools/devices/managing-avds.html">AVD Manager</a>.
+For more information, see
+<a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.</p>
 
+<h3 id="system">System images</h3>
 
-<h2 id="starting">Starting and Stopping the Emulator</h2>
-
-<p>During development and testing of your application, you install and run your
-application in the Android emulator. You can launch the emulator as a standalone
-application from a command line, or you can run it from within your Android Studio
-development environment. In either case, you specify the AVD configuration to
-load and any startup options you want to use, as described in this document.
+<p>The Android Emulator runs a full
+Android system stack, down to the kernel level, that includes a set of
+preinstalled apps (such as the dialer) that you can access from your
+apps. You can choose which version of the Android system you want to
+run in the emulator when creating AVDs.
 </p>
 
-<p>You can run your application on a single instance of the emulator or,
-depending on your needs, you can start multiple emulator instances and run your
-application in more than one emulated device. You can use the emulator's
-built-in commands to simulate GSM phone calling or SMS between emulator
-instances, and you can set up network redirection that allows emulators to send
-data to one another. For more information, see <a href="#telephony">Telephony
-Emulation</a>, <a href="#sms">SMS Emulation</a>, and
-<a href="#emulatornetworking">Emulator Networking</a></p>
+<p>The Android system images available through the AVD Manager contain
+code for the Android Linux kernel, the native libraries, the VM, and the
+various Android packages (such as the Android framework and preinstalled
+apps).</p>
 
-<p>To start an instance of the emulator from the command line, navigate to the
-<code>tools/</code> folder of the SDK. Enter <code>emulator</code> command
-like this: </p>
-
-<pre>emulator -avd &lt;avd_name&gt; [&lt;options&gt;]</pre>
-
-<p>This initializes the emulator, loads an AVD configuration and displays the emulator
-window. For more information about command line options for the emulator, see the
-<a href="{@docRoot}tools/help/emulator.html">Android Emulator</a> tool reference.</p>
-
-<p class="note"><strong>Note:</strong> You can run multiple
-instances of the emulator concurrently, each with its own AVD configuration and
-storage area for user data, SD card, and so on.</p>
-
-<p>When you run your app from Android Studio, it installs and launches the
-app on your connected device or emulator (launching the emulator, if necessary).
-You can specify emulator startup options in the Run/Debug
-dialog, in the Target tab. When the emulator is running, you can issue
-console commands as described later in this document.</p>
-
-<p>If you are not working in Android Studio, see <a href="#apps">Installing Applications
-on the Emulator</a> for information about how to install your application.</p>
-
-<p>To stop an emulator instance, just close the emulator's window.</p>
-
-<p>For a reference of the emulator's startup commands and keyboard mapping, see
-the <a href="{@docRoot}tools/help/emulator.html">Android Emulator</a> tool
-reference.</p>
-
-
-<h2 id="apps">Installing Applications on the Emulator</h2>
-
-<p>If you don't have access to Android Studio, you can install your application on the
-emulator using the <a href="{@docRoot}tools/help/adb.html#move">adb</a> utility. Before
-installing the application, you need to build and package it into an <code>.apk</code> as described
-in <a href="{@docRoot}tools/building/index.html">Building and
-Running Apps</a>. Once the application is installed, you can start the emulator from the command
-line as described previously, using any startup options necessary.
-When the emulator is running, you can also connect to the emulator instance's
-<a href="#console">console</a> to issue commands as needed.</p>
-
-<p>As you update your code, you periodically package and install it on the emulator.
-The emulator preserves the application and its state data across restarts,
-in a user-data disk partition. To ensure that the application runs properly
-as you update it, you may need to delete the emulator's user-data partition.
-To do so, start the emulator with the <code>-wipe-data</code> option.
-For more information about the user-data partition and other emulator storage,
-see <a href="#diskimages">Working with Emulator Disk Images</a>.</p>
-
-
-<h2 id="acceleration">Using Hardware Acceleration</h2>
-
-<p>In order to make the Android emulator run faster and be more responsive, you can configure it to
-take advantage of hardware acceleration, using a combination of configuration options, specific
-Android system images and hardware drivers.</p>
-
-
-<h3 id="accel-graphics">Configuring Graphics Acceleration</h3>
-
-<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the graphics
-acceleration feature for the emulator is experimental; be alert for incompatibilities and
-errors when using this feature. </p>
-
-<p>Graphics acceleration for the emulator takes advantage of your development computer's graphics
-hardware, specifically its graphics processing unit (GPU), to make screen drawing faster. To use
-the graphics acceleration feature, you must have the following versions of the Android development
-tools installed:</p>
-
-<ul>
-  <li>Android SDK Tools, Revision 17 or higher</li>
-  <li>Android SDK Platform API 15, Revision 3 or higher</li>
-</ul>
-
-<p>Use the <a href="{@docRoot}sdk/installing/index.html#AddingComponents">Android SDK
-Manager</a> to install these components:</p>
-
-<p class="note"><strong>Note:</strong> Not all applications are compatible with graphics hardware
-acceleration. In particular, the Browser application and applications using the {@link
-android.webkit.WebView} component are not compatible with graphics acceleration.</p>
-
-<p>To configure an AVD to use graphics acceleration:</p>
-
-<ol>
-  <li>Make sure you have the required SDK components installed (listed above).</li>
-  <li>Start the AVD Manager and create a new AVD with the <strong>Target</strong> value of
-<strong>Android 4.0.3 (API Level 15)</strong>, revision 3 or higher.</li>
-  <li>If you want to have graphics acceleration enabled by default for this AVD, in the
-<strong>Hardware</strong> section, click <strong>New</strong>, select <strong>GPU emulation</strong>
-and set the value to <strong>Yes</strong>.
-  <p class="note"><strong>Note:</strong> You can also enable graphics acceleration when you
-start an emulator using command line options as describe in the next section.</p>
-  </li>
-  <li>Name the AVD instance and select any other configuration options.
-  <p class="caution"><strong>Caution:</strong> Do not select the <strong>Snapshot: Enabled</strong>
-option. Snapshots are not supported for emulators with graphics acceleration enabled.</p>
-  </li>
-  <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
-</ol>
-
-<p>If you set <strong>GPU emulation</strong> to <strong>Yes</strong> for your AVD, then graphics
-acceleration is automatically enabled when you run it. If you did not enable <strong>GPU
-emulation</strong> when you created the AVD, you can still enable it at runtime.</p>
-
-<p>To enable graphics acceleration at runtime for an AVD:</p>
-
-<ul>
-  <li>If you are running the emulator from the command line, just include the {@code -gpu on}
-option:
-<pre>emulator -avd &lt;avd_name&gt; -gpu on</pre>
-    <p class="note"><strong>Note:</strong> You must specify an AVD configuration that uses
-Android 4.0.3 (API Level 15, revision 3) or higher system image target. Graphics acceleration is not
-available for earlier system images.</p>
-  </li>
-  <li>If you are running the emulator from Android Studio, run your Android application using an AVD
-with the {@code -gpu on} option enabled:
-    <ol>
-      <li>In Android Studio, click your Android application module folder and then select
-      <strong>Run > Edit Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
-      run configuration or create a new configuration.</li>
-      <li>Under the <strong>Target Device </strong> options,
-      select the AVD you created in the previous procedure.</li>
-      <li>In the <strong>Emulator</strong> tab, in the
-      <strong>Additional command line options</strong> field, enter:<br>
-        {@code -gpu on}</li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-
-<h3 id="accel-vm">Configuring Virtual Machine Acceleration</h2>
-
-<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the virtual machine
-acceleration feature for the emulator is experimental; be alert for incompatibilities and errors
-when using this feature.</p>
-
-<p>Many modern CPUs provide extensions for running virtual machines (VMs) more efficiently. Taking
-advantage of these extensions with the Android emulator requires some additional configuration of
-your development system, but can significantly improve the execution speed. Before attempting to use
-this type of acceleration, you should first determine if your development system’s CPU supports one
-of the following virtualization extensions technologies:</p>
-
-<ul>
-  <li>Intel Virtualization Technology (VT, VT-x, vmx) extensions</li>
-  <li>AMD Virtualization (AMD-V, SVM) extensions (only supported for Linux)</li>
-</ul>
-
-<p>The specifications from the manufacturer of your CPU should indicate if it supports
-virtualization extensions. If your CPU does not support one of these virtualization technologies,
-then you cannot use virtual machine acceleration.</p>
-
-<p class="note"><strong>Note:</strong> Virtualization extensions are typically enabled through
-your computer's BIOS and are frequently turned off by default. Check the documentation for your
-system's motherboard to find out how to enable virtualization extensions.</p>
-
-<p>Once you have determined that your CPU supports virtualization extensions, make sure you can work
-within these additional requirements of running an emulator inside an accelerated virtual
-machine:</p>
-
-<ul>
-  <li><strong>x86 AVD Only</strong> - You must use an AVD that is uses an x86 system image target.
-AVDs that use ARM-based system images cannot be accelerated using the emulator configurations
-described here.</li>
-  <li><strong>Not Inside a VM</strong> - You cannot run a VM-accelerated emulator inside another
-virtual machine, such as a VirtualBox or VMWare-hosted virtual machine. You must run the emulator
-directly on your system hardware.</li>
-  <li><strong>Other VM Drivers</strong> - If you are running another virtualization technology on
-your system such as VirtualBox or VMWare, you may need to unload the driver for that virtual machine
-hosting software before running an accelerated emulator.</li>
-  <li><strong>OpenGL&reg; Graphics</strong> - Emulation of OpenGL ES graphics may not perform at the
-same level as an actual device.</li>
-</ul>
-
-<p>To use virtual machine acceleration with the emulator, you need the following version of Android
-development tools. Use the <a href="{@docRoot}sdk/installing/index.html#AddingComponents">Android SDK
-Manager</a> to install these components:</p>
-
-<ul>
-  <li>Android SDK Tools, Revision 17 or higher</li>
-  <li>Android x86-based system image</li>
-</ul>
-
-<p>If your development environment meets all of the requirements for running a VM-accelerated
-emulator, you can use the AVD Manager to create an x86-based AVD configuration:</p>
-
-<ol>
-  <li>In the Android SDK Manager, make sure you have an x86-based <strong>System Image</strong>
-    installed for your target Android version. If you do not have an x86 <strong>System
-    Image</strong> installed, select one in the Android SDK Manager and install it.
-    <p class="note"><strong>Tip:</strong> System images are listed under each API Level in the SDK
-    Manager. An x86 system image may not be available for all API levels.</p>
-  </li>
-  <li>Start the AVD Manager and create a new AVD with an x86 value for the
-<strong>CPU/ABI</strong> field. You may need to select a specific <strong>Target</strong> value, or
-select a <strong>Target</strong> value and then select a specific <strong>CPU/ABI</strong>
-option.</li>
-  <li>Name the emulator instance and select any other configuration options.</li>
-  <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
-</ol>
-
-<h4 id="vm-windows">Configuring VM Acceleration on Windows</h4>
-
-<p>Virtual machine acceleration for Windows requires the installation of the Intel Hardware
-Accelerated Execution Manager (Intel HAXM). The software requires an Intel CPU with
-Virtualization Technology (VT) support and one of the following operating systems:</p>
-
-<ul>
-  <li>Windows 7 (32/64-bit)</li>
-  <li>Windows Vista (32/64-bit)</li>
-  <li>Windows XP (32-bit only)</li>
-</ul>
-
-<p>To install the virtualization driver:</p>
-
-<ol>
-  <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
-Hardware Accelerated Execution Manager</strong>.</li>
-  <li>After the download completes, execute {@code
-&lt;sdk&gt;/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.exe}.</li>
-  <li>Follow the on-screen instructions to complete installation.</li>
-  <li>After installation completes, confirm that the virtualization driver is operating correctly by
-opening a command prompt window and running the following command:
-    <pre>sc query intelhaxm</pre>
-    <p>You should see a status message including the following information:</p>
-<pre>
-SERVICE_NAME: intelhaxm
-       ...
-       STATE              : 4  RUNNING
-       ...
-</pre>
-  </li>
-</ol>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-<ul>
-  <li>If you are running the emulator from the command line, just specify an x86-based AVD:
-<pre>emulator -avd &lt;avd_name&gt;</pre>
-    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
-  </li>
-  <li>If you are running the emulator from Android Studio, run your Android application with an x86-based
-AVD:
-    <ol>
-      <li>In Android Studio, click your Android project folder and then select <strong>Run > Edit
-Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
-run configuration or create a new configuration.</li>
-      <li>Under the <strong>Target Device</strong> options, select the x86-based AVD you created
-previously.</li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
-its installer.</p>
-
-<p>You can stop using the virtualization driver by uninstalling it. Re-run the installer or use
-the Control Panel to remove the software.</p>
-
-
-<h4 id="vm-mac">Configuring VM Acceleration on Mac</h4>
-
-<p>Virtual machine acceleration on a Mac requires the installation of the Intel Hardware Accelerated
-Execution Manager (Intel HAXM) kernel extension to allow the Android emulator to make use of CPU
-virtualization extensions. The kernel extension is compatible with Mac OS X Snow Leopard (version
-10.6.0) and higher.</p>
-
-<p>To install the Intel HAXM kernel extension:</p>
-
-<ol>
-  <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
-Hardware Accelerated Execution Manager</strong>.
-  <li>After the download completes, execute
-    {@code &lt;sdk&gt;/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg}.</li>
-  <li>Double click the <strong>IntelHAXM.mpkg</strong> icon to begin installation.</li>
-  <li>Follow the on-screen instructions to complete installation.</li>
-  <li>After installation completes, confirm that the new kernel extension is operating correctly by
-opening a terminal window and running the following command:
-    <pre>kextstat | grep intel</pre>
-    <p>You should see a status message containing the following extension name, indicating that the
-      kernel extension is loaded:</p>
-    <pre>com.intel.kext.intelhaxm</pre>
-  </li>
-</ol>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-<ul>
-  <li>If you are running the emulator from the command line, just specify an x86-based AVD:
-<pre>emulator -avd &lt;avd_name&gt;</pre>
-    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
-  </li>
-  <li>If you are running the emulator from Andriod Studio, run your Android application with an x86-based
-AVD:
-    <ol>
-      <li>In Android Studio, click your Android module folder and then select <strong>Run > Edit
-Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
-run configuration or create a new configuration.</li>
-      <li>Under the <strong>Target Device</strong> options,
-      select the x86-based AVD you created previously.</li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
-the installer.</p>
-
-<p>You can stop using the virtualization kernel driver by uninstalling it. Before removing it, shut
-down any running x86 emulators. To unload the virtualization kernel driver, run the following
-command in a terminal window:</p>
-
-<pre>sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh</pre>
-
-<h4 id="vm-linux">Configuring VM Acceleration on Linux</h4>
-
-<p>Linux-based systems support virtual machine acceleration through the KVM software package. Follow
-<a href="https://www.google.com/?q=kvm+installation">instructions for installing KVM</a> on your
-Linux system, and verify that KVM is enabled. In addition to following the installation
-instructions, be aware of these configuration requirements:</p>
-
-<ul>
-  <li>Running KVM requires specific user permissions, make sure you have sufficient permissions
-according to the KVM installation instructions.</li>
-  <li>If you use another virtualization technology in your Linux platform, unload its kernel driver
-before running the x86 emulator. For example, the VirtualBox driver program is {@code vboxdrv}.</li>
-</ul>
-
-<p>To run an x86-based emulator with VM acceleration:</p>
-
-<ul>
-  <li>If you are running the emulator from the command line, start the emulator with an x86-based
-AVD and include the KVM options:
-<pre>emulator -avd &lt;avd_name&gt; -qemu -m 512 -enable-kvm</pre>
-    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
-name, otherwise VM acceleration will not be enabled.</p>
-  </li>
-  <li>If you are running the emulator from Android Studio, run your Android application with an
-  x86-based AVD and include the KVM options:
-    <ol>
-      <li>In Android Studio, click your Android module folder and then select <strong>Run > Edit
-Configurations...</strong></li>
-      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
-run configuration or create a new configuration.</li>
-      <li>Under the <strong>Target Device</strong> options, select the x86-based AVD you created
-previously.</li>
-      <li>In the <strong>Emulator</strong> tab, in the
-      <strong>Additional command line options</strong> field, enter:
-      <pre>-qemu -m 512 -enable-kvm</pre>
-      </li>
-      <li>Run your Android project using this run configuration.</li>
-    </ol>
-  </li>
-</ul>
-
-<p class="note"><strong>Important:</strong> When using the {@code -qemu} command line option, make sure
-it is the last parameter in your command. All subsequent options are interpreted as qemu-specific
-parameters.</p>
-
-
-<h2 id="sdcard">SD Card Emulation</h2>
-
-<p>You can create a disk image and then load it to the emulator at startup, to
-simulate the presence of a user's SD card in the device. To do this, you can specify
-an SD card image when you create an AVD, or you can use the mksdcard utility included
-in the SDK.</p>
-
-<p>The following sections describe how to create an SD card disk image, how to copy
-files to it, and how to load it in the emulator at startup. </p>
-
-<p>Note that you can only load a disk image at emulator startup. Similarly, you
-can not remove a simulated SD card from a running emulator. However, you can
-browse, send files to, and copy/remove files from a simulated SD card either
-with adb or the emulator. </p>
-
-<p>The emulator supports emulated SDHC cards, so you can create an SD card image
-of any size up to 128 gigabytes.</p>
-
-
-<h3 id="sdcard-creating">Creating an SD card image</h3>
-
-<p>There are several ways of creating an SD card image. The easiest way is to use the
-<strong>AVD Manager</strong> to create a new SD card by specifying a size when you create an AVD.
-You can also use the {@code android} command line tool when creating an AVD. Just add the
-<code>-c</code> option to your command: </p>
-
-<pre>android create avd -n &lt;avd_name&gt; -t &lt;targetID&gt; -c &lt;size&gt;[K|M]</pre>
-
-<p>The <code>-c</code> option can also be used to to specify a path to an SD card
-image for the new AVD. For more information, see <a
-href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing Virtual Devices
-from the Command Line</a>.
-</p>
-
-<p>You can also use the mksdcard tool, included in the SDK, to create a FAT32 disk
-image that you can load in the emulator at startup. You can access mksdcard in
-the tools/ directory of the SDK and create a disk image like this: </p>
-
-<pre>mksdcard &lt;size&gt; &lt;file&gt;</pre>
-
-<p>For example:</p>
-
-<pre>mksdcard 1024M sdcard1.iso</pre>
-
-<p>For more information, see <a
-href="{@docRoot}tools/help/mksdcard.html"><code>mksdcard</code></a>.</p>
-
-
-<h3 id="sdcard-files">Copying files to an SD card image</h3>
-
-<p>Once you have created the disk image, you can copy files to it prior to
-loading it in the emulator. To copy files, you can mount the image as a loop
-device and then copy the files to it, or you can use a utility such as {@code mtools} to
-copy the files directly to the image. The {@code mtools} package is available for Linux,
-Mac, and Windows.</p>
-
-<p>Alternatively, you can use the {@code adb push} command to move files onto an SD card image
-while it is loaded in an emulator. For more information see the <a
-href="{@docRoot}tools/help/adb.html#copyfiles">{@code adb push}</a> documentation.</p>
-
-<h3 id="sdcard-loading">Loading an SD card image</h3>
-
-<p>By default, the emulator loads the SD card image that is stored with the active
-AVD (see the <code>-avd</code> startup option).</p>
-
-<p>Alternatively, you can start the emulator with the
-<code>-sdcard</code> flag and specify the name and path of your image (relative
-to the current working directory): </p>
-
-<pre>emulator -sdcard &lt;filepath&gt;</pre>
-
-
-<h2 id="diskimages">Working with Emulator Disk Images</h2>
-
-<p>The emulator uses mountable disk images stored on your development machine to
-simulate flash (or similar) partitions on an actual device. For example, it uses a
-disk image containing an emulator-specific kernel, the Android system, a
-ramdisk image, and writeable images for user data and simulated SD card.</p>
-
-<p>To run properly, the emulator requires access to a specific set of disk image
-files. By default, the Emulator always looks for the disk images in the
-private storage area of the AVD in use. If no images exist there when
-the Emulator is launched, it creates the images in the AVD directory based on
-default versions stored in the SDK. </p>
-
-<p class="note"><strong>Note:</strong> The default storage location for
-AVDs is in <code>~/.android/avd</code> on OS X and Linux, <code>C:\Documents and
-Settings\&lt;user&gt;\.android\</code> on Windows XP, and
-<code>C:\Users\&lt;user&gt;\.android\</code>
-on Windows Vista.</p>
-
-<p>To let you use alternate or custom versions of the image files, the emulator
-provides startup options that override the default locations and filenames of
-the image files. When you use one of these options, the emulator searches for the image
-file under the image name or location that you specify; if it can not locate the
-image, it reverts to using the default names and location.</p>
-
-<p>The emulator uses three types of image files: default image files, runtime
-image files, and temporary image files. The sections below describe how to
-override the location/name of each type of file. </p>
-
-<h3 id="defaultimages">Default image files</h3>
-
-<p>When the emulator launches, but does not find an existing user data image in
-the active AVD's storage area, it creates a new one from a default version
-included in the SDK. The default user data image is read-only. The image
-files are read-only.</p>
-
-<p>The emulator provides the <code>-system &lt;dir&gt;</code> startup option to
-let you override the location where the emulator looks for the default
-user data image. </p>
-
-<p>The emulator also provides a startup option that lets you override the name
-of the default user data image, as described in the following table. When you use the
-option, the emulator looks in the default directory, or in a custom location
-(if you specified <code>-system &lt;dir&gt;</code>). </p>
-
-
-<table>
-<tr>
-  <th width="10%" >Name</th>
-    <th width="30%" >Description</th>
-    <th width="40%" >Comments</th>
-</tr>
-
-<!--
-<tr>
-  <td><code>kernel-qemu.img</code></td>
-  <td>The emulator-specific Linux kernel image</td>
-  <td>Override using <code>-kernel &lt;file&gt;</code></td>
-</tr>
-
-<tr>
-  <td><code>ramdisk.img</code></td>
-  <td>The ramdisk image used to boot the system.</td>
-  <td>Override using <code>-ramdisk &lt;file&gt;</code></td>
-</tr>
-
-<tr>
-  <td><code>system.img</code></td>
-  <td>The <em>initial</em> Android system image.</td>
-  <td>Override using <code>-image &lt;file&gt;</code></td>
-</tr>
--->
-<tr>
-  <td><code>userdata.img</code></td>
-  <td>The <em>initial</em> user-data disk image</td>
-  <td>Override using <code>-initdata &lt;file&gt;</code>. Also see
-<code>-data &lt;file&gt;</code>, below.</td>
-</tr>
-
-</table>
-
-<h3 id="runtimeimages">Runtime images: user data and SD card</h3>
-
-<p>At runtime, the emulator reads and writes data to two disk images: a
-user-data image and (optionally) an SD card image. These images emulate the user-data
-partition and removable storage media on actual device. </p>
-
-<p>The emulator provides a default user-data disk image. At startup, the emulator
-creates the default image as a copy of the system user-data image (user-data.img),
-described above. The emulator stores the new image with the files of the active AVD.</p>
-
-<!--
-<p>The emulator provides a startup option, <code>-datadir &lt;dir&gt;</code>,
-that you can use to override the location under which the emulator looks for the runtime
-image files. </p>
--->
-
-<p>The emulator provides startup options to let you override the actual names and storage
-locations of the runtime images to load, as described in the following table. When you use one
-of these options, the emulator looks for the specified file(s) in the current working directory,
-in the AVD directory, or in a custom location (if you specified a path with the filename). </p>
-
-<table>
-<tr>
-  <th width="10%" >Name</th>
-    <th width="30%" >Description</th>
-    <th width="40%" >Comments</th>
-</tr>
-<tr>
-  <td><code>userdata-qemu.img</code></td>
-  <td>An image to which the emulator writes runtime user-data for a unique user.</td>
-  <td>Override using <code>-data &lt;filepath&gt;</code>, where <code>&lt;filepath&gt;</code> is the
-path the image, relative to the current working directory. If you supply a filename only,
-the emulator looks for the file in the current working directory. If the file at <code>&lt;filepath&gt;</code> does
-not exist, the emulator creates an image from the default <code>userdata.img</code>, stores it under the name you
-specified, and persists user data to it at shutdown. </td>
-</tr>
-
-<tr>
-  <td><code>sdcard.img</code></td>
-  <td>An image representing an SD card inserted into the emulated device.</td>
-  <td>Override using <code>-sdcard &lt;filepath&gt;</code>, where <code>&lt;filepath&gt;</code> is the
-path the image, relative to the current working directory. If you supply a filename only,
-the emulator looks for the file in the current working directory. </td>
-</tr>
-
-</table>
-
-<h4>User-Data Image</h4>
-
-<p>Each emulator instance uses a writeable user-data image to store user- and
-session-specific data. For example, it uses the image to store a unique user's
-installed application data, settings, databases, and files. </p>
-
-<p>At startup, the emulator attempts to load a user-data image stored during
-a previous session. It looks for the file in the current working directory,
-in the AVD directory described in a previous section and at the custom location/name
-that you specified at startup. </p>
-
-<ul>
-<li>If it finds a user-data image, it mounts the image and makes it available
-to the system for reading and writing of user data. </li>
-<li>If it does not find one, it creates an image by copying the system user-data
-image (userdata.img), described above. At device power-off, the system persists
-the user data to the image, so that it will be available in the next session.
-Note that the emulator stores the new disk image at the location/name that you
-specify in <code>-data</code> startup option.</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Because of the AVD configurations used in the emulator,
-each emulator instance gets its own dedicated storage. There is no longer a need
-to use the <code>-d</code> option to specify an instance-specific storage area.</p>
-
-<h4>SD Card</h4>
-
-<P>Optionally, you can create a writeable disk image that the emulator can use
-to simulate removeable storage in an actual device. For information about how to create an
-emulated SD card and load it in the emulator, see <a href="#sdcard">SD Card Emulation</a></p>
-
-<p>You can also use the android tool to automatically create an SD Card image
-for you, when creating an AVD. For more information, see <a
-href="{@docRoot}tools/devices/managing-avds.html">Managing Virtual Devices with AVD
-Manager</a>.
-
-
-<h3 id="temporaryimages">Temporary Images</h3>
-
-<p>The emulator creates two writeable images at startup that it deletes at
-device power-off. The images are: </p>
-
-<ul>
-  <li>A writable copy of the Android system image</li>
-  <li>The <code>/cache</code> partition image</li>
-</ul>
-
-<p>The emulator does not permit renaming the temporary system image or
-persisting it at device power-off. </p>
-
-<p>The <code>/cache</code> partition image is initially empty, and is used by
-the browser to cache downloaded web pages and images. The emulator provides an
-<code>-cache &lt;file&gt;</code>, which specifies the name of the file in which
-to persist the <code>/cache</code> image at device power-off. If <code>&lt;file&gt;
-</code> does not exist, the emulator creates it as an empty file. </p>
-
-<p>You can also disable the use of the cache partition by specifying the
-<code>-nocache</code> option at startup. </p>
-
-
-<h2 id="emulatornetworking">Emulator Networking</h2>
-
-<p>The emulator provides versatile networking capabilities that you can use to
-set up complex modeling and testing environments for your application. The
-sections below introduce the emulator's network architecture and capabilities.
-</p>
-
-<h3 id="networkaddresses">Network Address Space</h3>
-
-<p>Each instance of the emulator runs behind a virtual router/firewall service
-that isolates it from your development machine's network interfaces and settings
-and from the internet. An emulated device can not see your development machine
-or other emulator instances on the network. Instead, it sees only that it is
-connected through Ethernet to a router/firewall.</p>
-
-<p>The virtual router for each instance manages the 10.0.2/24 network address
-space &mdash; all addresses managed by the router are in the form of
-10.0.2.&lt;xx&gt;, where &lt;xx&gt; is a number. Addresses within this space are
-pre-allocated by the emulator/router as follows:</p>
-
-<table>
-  <tr>
-    <th>Network Address</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td>10.0.2.1</td>
-    <td>Router/gateway address </td>
-  </tr>
-  <tr>
-    <td>10.0.2.2</td>
-    <td>Special alias to your host loopback interface (i.e., 127.0.0.1 on your
-development machine)</td>
-  </tr>
-  <tr>
-    <td>10.0.2.3</td>
-    <td>First DNS server</td>
-  </tr>
-  <tr>
-    <td>10.0.2.4 / 10.0.2.5 / 10.0.2.6</td>
-    <td>Optional second, third and fourth DNS server (if any) </td>
-  </tr>
-  <tr>
-    <td>10.0.2.15</td>
-    <td>The emulated device's own network/ethernet interface</td>
-  </tr>
-  <tr>
-    <td>127.0.0.1</td>
-    <td>The emulated device's own loopback interface </td>
-  </tr>
-</table>
-
-<p>Note that the same address assignments are used by all running emulator
-instances. That means that if you have two instances running concurrently on
-your machine, each will have its own router and, behind that, each will have an
-IP address of 10.0.2.15. The instances are isolated by a router and can
-<em>not</em> see each other on the same network. For information about how to
-let emulator instances communicate over TCP/UDP, see <a
-href="#connecting">Connecting Emulator Instances</a>.</p>
-
-<p>Also note that the address 127.0.0.1 on your development machine corresponds
-to the emulator's own loopback interface. If you want to access services running
-on your development machine's loopback interface (a.k.a. 127.0.0.1 on your
-machine), you should use the special address 10.0.2.2 instead.</p>
-
-<p>Finally, note that each emulated device's pre-allocated addresses are
-specific to the Android emulator and will probably be very different on real
-devices (which are also very likely to be NAT-ed, i.e., behind a
-router/firewall)</p>
-
-
-<h3 id="networkinglimitations">Local Networking Limitations</h3>
-
-<p>Android applications running in an emulator can connect to the network available on your
-workstation. However, they connect through the emulator, not directly to hardware, and the emulator
-acts like a normal application on your workstation. This means that the emulator, and thus your
-Android applications, are subject to some limitations:</p>
-
-<ul>
-  <li>Communication with the emulated device may be blocked by a firewall
-program running on your machine.</li>
-  <li>Communication with the emulated device may be blocked by another
-(physical) firewall/router to which your machine is connected.</li>
-</ul>
-
-<p>The emulator's virtual router should be able to handle all outbound TCP and
-UDP connections/messages on behalf of the emulated device, provided your
-development machine's network environment allows it to do so. There are no
-built-in limitations on port numbers or ranges except the one imposed by your
-host operating system and network.</p>
-
-<p>Depending on the environment, the emulator may not be able to support other
-protocols (such as ICMP, used for "ping") might not be supported. Currently, the
-emulator does not support IGMP or multicast. </p>
-
-<h3 id="redirection">Using Network Redirection</h3>
-
-<p>To communicate with an emulator instance behind its virtual router, you need
-to set up network redirection on the virtual router. Clients can then connect
-to a specified guest port on the router, while the router directs traffic
-to/from that port to the emulated device's host port. </p>
-
-<p>To set up the network redirection, you create a mapping of host and guest
-ports/addresses on the emulator instance. There are two ways to set up
-network redirection: using emulator console commands and using the ADB tool, as
-described below. </p>
-
-
-<h4 id="consoleredir">Setting up Redirection through the Emulator Console</h4>
-
-<p>Each emulator instance provides a control console the you can connect to, to
-issue commands that are specific to that instance. You can use the
-<code>redir</code> console command to set up redirection as needed for an
-emulator instance. </p>
-
-<p>First, determine the console port number for the target emulator instance.
-For example, the console port number for the first emulator instance launched is
-5554. Next, connect to the console of the target emulator instance, specifying
-its console port number, as follows: </p>
-
-<pre><code>telnet localhost 5554</code></pre>
-
-<p>Once connected, use the <code>redir</code> command to work with redirection.
-To add a redirection, use:</p>
-
-<pre><code>add&nbsp;&lt;protocol&gt;:&lt;host-port&gt;:&lt;guest-port&gt;</code>
-</pre>
-
-<p>where <code>&lt;protocol&gt;</code> is either <code>tcp</code> or <code>udp</code>,
-and <code>&lt;host-port&gt;</code> and <code>&lt;guest-port&gt;</code> sets the
-mapping between your own machine and the emulated system, respectively. </p>
-
-<p>For example, the following command sets up a redirection that handles all
-incoming TCP connections to your host (development) machine on 127.0.0.1:5000
-and will pass them through to the emulated system's 10.0.2.15:6000.:</p>
-
-<pre>redir add tcp:5000:6000</pre>
-
-<p>To delete a redirection, you can use the <code>redir del</code> command. To
-list all redirection for a specific instance, you can use <code>redir
-list</code>. For more information about these and other console commands, see
-<a href="#console">Using the Emulator Console</a>. </p>
-
-<p>Note that port numbers are restricted by your local environment. this typically
-means that you cannot use host port numbers under 1024 without special
-administrator privileges.  Also, you won't be able to set up a redirection for a
-host port that is already in use by another process on your machine. In that
-case, <code>redir</code> generates an error message to that effect. </p>
-
-<h4 id="adbredir">Setting Up Redirection through ADB</h4>
-
-<p>The Android Debug Bridge (ADB) tool provides port forwarding, an alternate
-way for you to set up network redirection. For more information, see <a
-href="{@docRoot}tools/help/adb.html#forwardports">Forwarding Ports</a> in the ADB
-documentation.</p>
-
-<p>Note that ADB does not currently offer any way to remove a redirection,
-except by killing the ADB server.</p>
-
-
-<h3 id="dns">Configuring the Emulator's DNS Settings</h3>
-
-<p>At startup, the emulator reads the list of DNS servers that your system is
-currently using. It then stores the IP addresses of up to four servers on this
-list and sets up aliases to them on the emulated addresses 10.0.2.3, 10.0.2.4,
-10.0.2.5 and 10.0.2.6 as needed.  </p>
-
-<p>On Linux and OS X, the emulator obtains the DNS server addresses by parsing
-the file <code>/etc/resolv.conf</code>. On Windows, the emulator obtains the
-addresses by calling the <code>GetNetworkParams()</code> API. Note that this
-usually means that the emulator ignores the content of your "hosts" file
-(<code>/etc/hosts</code> on Linux/OS X, <code>%WINDOWS%/system32/HOSTS</code>
- on Windows).</P>
-
-<p>When starting the emulator at the command line, you can also use the
-<code>-dns-server &lt;serverList&gt;</code> option to manually specify the
-addresses of DNS servers to use, where &lt;serverList&gt; is a comma-separated
-list of server names or IP addresses. You might find this option useful if you
-encounter DNS resolution problems in the emulated network (for example, an
-"Unknown Host error" message that appears when using the web browser).</p>
-
-
-<h3 id="proxy">Using the Emulator with a Proxy</h3>
-
-<p>If your emulator must access the Internet through a proxy server, you can use
-the <code>-http-proxy &lt;proxy&gt;</code> option when starting the emulator, to
-set up the appropriate redirection. In this case, you specify proxy information
-in <code>&lt;proxy&gt;</code> in one of these formats:</p>
-
-<pre>http://&lt;machineName&gt;:&lt;port&gt;</pre>
-
-<p>or</p>
-
-<pre>http://&lt;username&gt;:&lt;password&gt;@&lt;machineName&gt;:&lt;port&gt;</pre>
-
-<p>The <code>-http-proxy</code> option forces the emulator to use the specified
-HTTP/HTTPS proxy for all outgoing TCP connections. Redirection for UDP is not
-currently supported.</p>
-
-<p>Alternatively, you can define the environment variable
-<code>http_proxy</code> to the value you want to use for
-<code>&lt;proxy&gt;</code>. In this case, you do not need to specify a value for
-<code>&lt;proxy&gt;</code> in the <code>-http-proxy</code> command &mdash; the
-emulator checks the value of the <code>http_proxy</code> environment variable at
-startup and uses its value automatically, if defined. </p>
-
-<p>You can use the <code>-verbose-proxy</code> option to diagnose proxy
-connection problems.</p>
-
-
-<h3 id="connecting">Interconnecting Emulator Instances</h3>
-
-<p>To allow one emulator instance to communicate with another, you must set up
-the necessary network redirection as illustrated below. </p>
-
-<p>Assume that your environment is</p>
-
-<ul>
-  <li>A is you development machine</li>
-  <li>B is your first emulator instance, running on A</li>
-  <li>C is your second emulator instance, also running on A</li>
-</ul>
-
-<p>and you want to run a server on B, to which C will connect, here is how you
-could set it up: </p>
-
-<ol>
-  <li>Set up the server on B, listening to
-<code>10.0.2.15:&lt;serverPort&gt;</code></li>
-  <li>On B's console, set up a redirection from
-<code>A:localhost:&lt;localPort&gt;</code> to <code>
-B:10.0.2.15:&lt;serverPort&gt;</code></li>
-  <li>On C, have the client connect to <code>10.0.2.2:&lt;localPort&gt;</code></li>
-</ol>
-
-<p>For example, if you wanted to run an HTTP server, you can select
-<code>&lt;serverPort&gt;</code> as 80 and <code>&lt;localPort&gt;</code> as
-8080:</p>
-
-<ul>
-  <li>B listens on 10.0.2.15:80</li>
-  <li>On B's console, issue <code>redir add tcp:8080:80</code></li>
-  <li>C connects to 10.0.2.2:8080</li>
-</ul>
-
-<h3 id="calling">Sending a Voice Call or SMS to Another Emulator Instance</h3>
-
-<p>The emulator automatically forwards simulated voice calls and SMS messages from one instance to
-another. To send a voice call or SMS, use the dialer application or SMS application, respectively,
-from one of the emulators.</p>
-
-<p>To initiate a simulated voice call to another emulator instance:</p>
-<ol>
-<li>Launch the dialer application on the originating emulator instance.</li>
-<li>As the number to dial, enter the console port number of the instance you'd like to call. You can determine
-  the console port number of the target instance by checking its window title, where the
-  console port number is reported as "Android Emulator (&lt;port&gt;). </li>
-<li>Press "Dial". A new inbound call appears in the target emulator instance. </li>
-</ol>
-
-<p>To send an SMS message to another emulator instance, launch the SMS application (if available). Specify the console port number of the target emulator instance as as the SMS address, enter the message text, and send the message. The message is delivered to the target emulator instance. </p>
-
-<p>You can also connect to an emulator instance's console to simulate an incoming voice call or SMS. For more information, see <a href="#telephony">Telephony Emulation</a> and <a href="#sms">SMS Emulation</a>.
-
-
-<h2 id="console">Using the Emulator Console</h2>
-
-<p>Each running emulator instance provides a console that lets you query and control the emulated
-device environment. For example, you can use the console to manage port redirection, network
-characteristics, and telephony events while your application is running on the emulator. To
-access the console and enter commands, use telnet to connect to the console's port number.</p>
-
-<p>To connect to the console of any running emulator instance at any time, use this command: </p>
-
-<pre>telnet localhost &lt;console-port&gt;</pre>
-
-<p>An emulator instance occupies a pair of adjacent ports: a console port and an  {@code adb} port.
-The port numbers differ by 1, with the  {@code adb} port having the higher port number. The console
-of the first emulator instance running on a given machine uses console port 5554 and  {@code adb}
-port 5555. Subsequent instances use port numbers increasing by two &mdash; for example, 5556/5557,
-5558/5559, and so on. Up to 16 concurrent emulator instances can run a console facility. </p>
-
-<p>To connect to the emulator console, you must specify a valid console port. If multiple emulator instances are running, you need to determine the console port of the emulator instance you want to connect to. You can find the instance's console port listed in the title of the instance window. For example, here's the window title for an instance whose console port is 5554:</p>
-
-<p><code>Android Emulator (5554)</code></p>
-
-<p>Alternatively, you can use the <code>adb devices</code> command, which prints a list of running emulator instances and their console port numbers. For more information, see <a href="{@docRoot}tools/help/adb.html#devicestatus">Querying for Emulator/Device Instances</a> in the adb documentation.</p>
-
-<p class="note">Note: The emulator listens for connections on ports 5554-5587 and accepts connections only from localhost.</p>
-
-<p>Once you are connected to the console, you can then enter <code>help [command]</code> to see a list of console commands and learn about specific commands. </p>
-
-<p>To exit the console session, use <code>quit</code> or <code>exit</code>.</p>
-
-<p>The following sections below describe the major functional areas of the console.</p>
-
-
-<h3 id="portredirection">Port Redirection</h3>
-
-<p>You can use the console to add and remove port redirection while the emulator is running. After
-you connect to the console, manage port redirection by entering the following command:</p>
-
-<pre>redir &lt;list|add|del&gt; </pre>
-
-<p>The <code>redir</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%" >Subcommand
-  <th width="30%" >Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>list</code></td>
-    <td>List the current port redirection.</td>
-  <td>&nbsp;</td>
-  </tr>
-
-
-<tr>
- <td><code>add&nbsp;&lt;protocol&gt;:&lt;host-port&gt;:&lt;guest-port&gt;</code></td>
-  <td>Add a new port redirection.</td>
-<td><ul><li>&lt;protocol&gt; must be either &quot;tcp&quot; or &quot;udp&quot;</li>
-<li>&lt;host-port&gt; is the port number to open on the host</li>
-<li>&lt;guest-port&gt; is the port number to route data to on the emulator/device</li>
-</ul></td>
-</tr>
-<tr>
-  <td><code>del &lt;protocol&gt;:&lt;host-port&gt;</code></td>
-  <td>Delete a port redirection.</td>
-<td>The meanings of &lt;protocol&gt; and &lt;host-port&gt; are listed in the previous row.</td>
-</tr>
-</table>
-
-
-<h3 id="geo">Geo Location Provider Emulation</h3>
-
-<p>You can use the console to set the geographic location reported to the applications running
-inside an emulator. Use the <code>geo</code> command to send a simple GPS fix to the
-emulator, with or without NMEA 1083 formatting:</p>
-
-<pre>geo &lt;fix|nmea&gt;</pre>
-
-<p>The <code>geo</code> command supports the subcommands listed in the table below.</p>
-
-<table>
-<tr>
-  <th width="25%">Subcommand</th>
-  <th width="30%">Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>fix &lt;longitude&gt; &lt;latitude&gt; [&lt;altitude&gt;]</code></td>
-    <td>Send a simple GPS fix to the emulator instance.</td>
-  <td>Specify longitude and latitude in decimal degrees. Specify altitude in meters.</td>
-  </tr>
-<tr>
-  <td><code>nmea &lt;sentence&gt;</code></td>
-  <td>Send an NMEA 0183 sentence to the emulated device, as if it were sent from an emulated GPS modem.</td>
-<td><code>&lt;sentence&gt;</code> must begin with '$GP'. Only '$GPGGA' and '$GPRCM' sentences are currently supported.</td>
-</tr>
-</table>
-
-<p>You can issue the <code>geo</code> command as soon as an emulator instance is running. The
-emulator sets the location you enter by creating a mock location provider. This provider responds to
-location listeners set by applications, and also supplies the location to the {@link
-android.location.LocationManager}. Any application can query the location manager to obtain the
-current GPS fix for the emulated device by calling:
-
-<pre>LocationManager.getLastKnownLocation("gps")</pre>
-
-<p>For more information about the Location Manager, see {@link android.location.LocationManager}.
-</p>
-
-<h3 id="events">Hardware Events Emulation</h3>
-
-<p>The {@code event} console commands sends hardware events to the emulator. The syntax for this
-command is as follows:</p>
-
-<pre>event &lt;send|types|codes|text&gt;</pre>
-
-<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%" >Subcommand
-  <th width="30%" >Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>send &lt;type&gt;:&lt;code&gt;:&lt;value&gt; [...]</code></td>
-    <td>Send one or more events to the Android kernel. </td>
-  <td>You can use text names or integers for <code>&lt;type&gt;</code> and <code>&lt;value&gt;</code>.</td>
-  </tr>
-<tr>
-  <td><code>types</code></td>
-  <td>List all <code>&lt;type&gt;</code> string aliases supported by the <code>event</code> subcommands.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>codes &lt;type&gt;</code></td>
-  <td>List all <code>&lt;codes&gt;</code> string aliases supported by the <code>event</code>
-   subcommands for the specified <code>&lt;type&gt;</code>.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>event text &lt;message&gt;</code></td>
-  <td>Simulate keypresses to send the specified string of characters as a message,</td>
-<td>The message must be a UTF-8 string. Unicode posts will be reverse-mapped according to the current device keyboard. Unsupported characters will be discarded silently.</td>
-</tr>
-</table>
-
-
-<h3 id="power">Device Power Characteristics</h3>
-
-<p>The {@code power} command controls the power state reported by the emulator to applications. The
-syntax for this command is as follows: </p>
-
-<pre>power &lt;display|ac|status|present|health|capacity&gt;</pre>
-
-<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%" >Subcommand </th>
-  <th width="30%" >Description</th>
-  <th width="35%">Comments</th>
-</tr>
-
-  <tr>
-    <td><code>display</code></td>
-    <td>Display battery and charger state.</td>
-  <td>&nbsp;</td>
-  </tr>
-<tr>
-  <td><code>ac &lt;on|off&gt;</code></td>
-  <td>Set AC charging state to on or off. </td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>status &lt;unknown|charging|discharging|not-charging|full&gt;</code></td>
-  <td>Change battery status as specified.</td>
-<td>&nbsp;</td>
-</tr>
-
-<tr>
-  <td><code>present &lt;true|false&gt;</code></td>
-  <td>Set battery presence state.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>health &lt;unknown|good|overheat|dead|overvoltage|failure&gt;</code></td>
-  <td>Set battery health state.</td>
-<td>&nbsp;</td>
-</tr>
-<tr>
-  <td><code>capacity &lt;percent&gt;</code></td>
-  <td>Set remaining battery capacity state (0-100).</td>
-<td>&nbsp;</td>
-</tr>
-</table>
-
-
-<h3 id="netstatus">Network Status</h3>
-
-<p>You can use the console to check the network status and current delay and speed characteristics. To do so, connect to the console and use the <code>netstatus</code> command. Here's an example of the command and its output. </p>
-
-<pre>network status
-</pre>
-
-
-<h3 id="netdelay">Network Delay Emulation</h3>
-
-<p>The emulator lets you simulate various network latency levels, so that you can test your
-application in an environment more typical of the actual conditions in which it will run. You can
-set a latency level or range at emulator startup or you can use the console to change the latency,
-while the application is running in the emulator. </p>
-
-<p>To set latency at emulator startup, use the  <code>-netdelay</code> emulator option with a
-supported <code>&lt;delay&gt;</code> value, as listed in the table below. Here are some
-examples:</p>
-
-<pre>emulator -netdelay gprs
-emulator -netdelay 40 100</pre>
-
-<p>To make changes to  network delay while the emulator is running, connect to the console and use
-the <code>netdelay</code> command with a supported <code>&lt;delay&gt;</code> value from the table
-below.</p>
-
-<pre>network delay gprs</pre>
-
-<p>The format of network &lt;delay&gt; is one of the following (numbers are milliseconds):</p>
-
-<table style="clear:right;width:100%;">
-<tr>
-  <th width="30%" >Value</th>
-  <th width="35%" >Description</th><th width="35%">Comments</th></tr>
-
-  <tr><td><code>gprs</code></td><td>GPRS</td>
-  <td>(min 150, max 550)</td>
-  </tr>
-
-<tr><td><code>edge</code></td><td>EDGE/EGPRS</td>
-<td>(min 80, max 400)</td>
-</tr>
-<tr><td><code>umts</code></td><td>UMTS/3G</td>
-<td>(min 35, max 200)</td>
-</tr>
-<tr><td><code>none</code></td><td>No latency</td><td>(min 0, max 0)</td></tr>
-<tr><td><code>&lt;num&gt;</code></td>
-<td>Emulate an exact latency  (milliseconds).</td>
-<td>&nbsp;</td></tr>
-<tr><td><code>&lt;min&gt;:&lt;max&gt;</code></td>
-<td>Emulate an specified latency range (min, max milliseconds).</td>
-<td>&nbsp;</td></tr>
-</table>
-
-
-<h3 id="netspeed">Network Speed Emulation</h3>
-
-<p>The emulator also lets you simulate various network transfer rates.
-You can set a transfer rate or range at emulator startup or you can use the console to change the
-rate, while the application is running in the emulator.</p>
-
-<p>To set the network speed at emulator startup, use the  <code>-netspeed</code> emulator option with a supported
-<code>&lt;speed&gt;</code> value, as listed in the table below. Here are some examples:</p>
-
-<pre>emulator -netspeed gsm
-emulator -netspeed 14.4 80</pre>
-
-<p>To make changes to network speed while the emulator is running, connect to the console and use
-the <code>netspeed</code> command with a supported <code>&lt;speed&gt;</code> value from the table
-below.</p>
-
-<pre>network speed 14.4 80</pre>
-
-<p>The format of network <code>&lt;speed&gt;</code> is one of the following (numbers are
-kilobits/sec):</p>
-<table style="clear:right;width:100%;">
-<tbody>
-<tr>
-  <th width="30%">Value</th>
-  <th width="35%">Description</th><th width="35%">Comments</th></tr>
-
-  <tr>
-  <td><code>gsm</code></td>
-  <td>GSM/CSD</td><td>(Up: 14.4, down: 14.4)</td></tr>
-<tr>
-  <td><code>hscsd</code></td>
-  <td>HSCSD</td><td>(Up: 14.4, down: 43.2)</td></tr>
-<tr>
-  <td><code>gprs</code></td>
-  <td>GPRS</td><td>(Up: 40.0, down: 80.0)</td></tr>
-<tr>
-  <td><code>edge</code></td>
-  <td>EDGE/EGPRS</td>
-  <td>(Up: 118.4, down: 236.8)</td>
-</tr>
-<tr>
-  <td><code>umts</code></td>
-  <td>UMTS/3G</td><td>(Up: 128.0, down: 1920.0)</td></tr>
-<tr>
-  <td><code>hsdpa</code></td>
-  <td>HSDPA</td><td>(Up: 348.0, down: 14400.0)</td></tr>
-<tr>
-  <td><code>full</code></td>
-  <td>no limit</td><td>(Up: 0.0, down: 0.0)</td></tr>
-<tr>
-  <td><code>&lt;num&gt;</code></td>
-  <td>Set an exact rate used for both upload and download.</td><td></td></tr>
-<tr>
-  <td><code>&lt;up&gt;:&lt;down&gt;</code></td>
-  <td>Set exact rates for upload and download separately.</td><td></td></tr>
-</table>
-
-
-<h3 id="telephony">Telephony Emulation</h3>
-
-<p>The Android emulator includes its own GSM emulated modem that lets you simulate telephony
-functions in the emulator. For example, you can simulate inbound phone calls, establish data
-connections and terminate them. The Android system handles simulated calls exactly as it would
-actual calls. The emulator does not support call audio.</p>
-
-<p>You can use the {@code gsm} command to access the emulator's telephony functions after connecting
-to the console. The syntax for this command is as follows:</p>
-
-<pre>gsm &lt;call|accept|busy|cancel|data|hold|list|voice|status&gt; </pre>
-
-<p>The <code>gsm</code> command supports the subcommands listed in the table below. </p>
-<table>
-  <tr>
-    <th>Subcommand </th>
-    <th width="25%">Description</th>
-    <th>Comments</th>
-  </tr>
-  <tr>
-    <td><code>call &lt;phonenumber&gt;</code></td>
-    <td>Simulate an inbound phone call from &lt;phonenumber&gt;.</td>
-    <td>&nbsp;</td>
-  </tr>
-  <tr>
-    <td><code>accept &lt;phonenumber&gt;</code></td>
-    <td>Accept an inbound call from &lt;phonenumber&gt; and change the call's state "active".</td>
-    <td>You can change a call's state to "active" only if its current state is "waiting" or "held".</td>
-  </tr>
-  <tr>
-    <td><code>busy &lt;phonenumber&gt;</code></td>
-    <td>Close an outbound call to &lt;phonenumber&gt; and change the call's state to "busy".</td>
-    <td>You can change a call's state to "busy" only if its current state is "waiting".</td>
-  </tr>
-  <tr>
-    <td><code>cancel &lt;phonenumber&gt;</code></td>
-    <td>Terminate an inbound or outbound phone call to/from &lt;phonenumber&gt;.</td>
-    <td>&nbsp;</td>
-  </tr>
-  <tr>
-    <td><code>data &lt;state&gt;</code></td>
-    <td>Change the state of the GPRS data connection to &lt;state&gt;.</td>
-    <td>Supported &lt;state&gt; values are:<br />
+<h3 id="dependencies">Dependencies and prerequisites</h3>
+<p>The Android Emulator has the following requirements:</p>
     <ul>
-          <li><code>unregistered</code> -- No network available</li>
-          <li><code>home</code> -- On local network, non-roaming</li>
-          <li><code>roaming</code> -- On roaming network</li>
-          <li><code>searching</code> -- Searching networks</li>
-          <li><code>denied</code> -- Emergency calls only</li>
-          <li><code>off</code> -- Same as 'unregistered'</li>
-      <li><code>on</code> -- same as 'home'</li>
-    </ul>
-          </td>
-  </tr>
-  <tr>
-    <td><code>hold</code></td>
-    <td>Change the state of a call to "held". </td>
-    <td>You can change a call's state to "held" only if its current state is	 "active" or "waiting". </td>
-  </tr>
-  <tr>
-    <td><code>list</code></td>
-    <td>List all inbound and outbound calls and their states.</td>
-    <td>&nbsp;</td>
-  </tr>
-  <tr>
-    <td><code>voice &lt;state&gt;</code></td>
-    <td>Change the state of the GPRS voice connection to &lt;state&gt;.</td>
-    <td>Supported &lt;state&gt; values are:<br />
-    <ul>
-    <li><code>unregistered</code> -- No network available</li>
-    <li><code>home</code> -- On local network, non-roaming</li>
-    <li><code>roaming</code> -- On roaming network</li>
-    <li><code>searching</code> -- Searching networks</li>
-    <li><code>denied</code> -- Emergency calls only</li>
-    <li><code>off</code> -- Same as 'unregistered'</li>
-    <li><code>on</code> -- Same as 'home'</li>
-    </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>status</code></td>
-    <td>Report the current GSM voice/data state.</td>
-    <td>Values are those described for the <code>voice</code> and <code>data</code> commands.</td>
-  </tr>
-</table>
-
-
-<h3 id="sms">SMS Emulation</h3>
-
-<p>The Android emulator console lets you generate an SMS message and direct it to an emulator
-instance. Once you connect to an emulator instance, you can generate an emulated incoming SMS using
-the following command:</p>
-
-<pre>sms send &lt;senderPhoneNumber&gt; &lt;textmessage&gt;</pre>
-
-<p>where <code>&lt;senderPhoneNumber&gt;</code> contains an arbitrary numeric string. </p>
-
-<p>The console forwards the SMS message to the Android framework, which passes it through to an application that handles that message type. </p>
-
-
-<h3 id="vm">VM State</h3>
-
-<p>You can use the <code>vm</code> command to control the VM on an emulator instance. The syntax for
-this command is as follows: </p>
-
-<pre>vm &lt;start|stop|status&gt;</pre>
-
-<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%">Subcommand</th>
-  <th width="30%">Description</th>
-  <th width="35%">Comments</th>
-</tr>
-<tr>
-    <td><code>start</code></td>
-    <td>Start the VM on the instance. </td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-    <td><code>stop</code></td>
-    <td>Stop the VM on the instance. </td>
-  <td>&nbsp;</td>
-</tr>
-<tr>
-    <td><code>start</code></td>
-    <td>Display the current status of the VM (running or stopped). </td>
-  <td>&nbsp;</td>
-</tr>
-</table>
-
-
-<h3 id="window">Emulator Window</h3>
-
-<p>You can use the <code>window</code> command to manage the emulator window. The syntax for this
-command is as follows: </p>
-
-<pre>window &lt;scale&gt;</pre>
-
-<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
-
-<table>
-<tr>
-  <th width="25%">Subcommand</th>
-  <th width="30%">Description</th>
-  <th width="35%">Comments</th>
-</tr>
-<tr>
-    <td><code>scale &lt;scale&gt;</code></td>
-    <td>Scale the emulator window.</td>
-  <td>A number between 0.1 and 3 that sets the scaling factor. You can
-  also specify scale as a DPI value if you add the suffix "dpi" to the scale value. A value of "auto"
-  tells the emulator to select the best window size.</td>
-</tr>
-</table>
-
-
-<h3 id="terminating">Terminating an Emulator Instance</h3>
-
-<p>You can terminate an emulator instance through the console, using the <code>kill</code> command.</p>
-
-
-<h2 id="limitations">Emulator Limitations</h2>
-
-<p>The functional limitations of the emulator include: </p>
-<ul>
-  <li>No support for placing or receiving actual phone calls. You can simulate phone calls (placed
-    and received) through the emulator console, however. </li>
-  <li>No support for USB connections</li>
-  <li>No support for device-attached headphones</li>
-  <li>No support for determining network connected state</li>
-  <li>No support for determining battery charge level and AC charging state</li>
-  <li>No support for determining SD card insert/eject</li>
-  <li>No support for Bluetooth</li>
+  <li>Android Studio 2.0 or higher</li>
+  <li>SDK Tools 25.0.10 or higher</li>
+  <li><a href="{@docRoot}sdk/index.html#Requirements">System
+  requirements</a></li>
+  <li>Newly created AVDs to replace any AVDs for emulator 24.0.<em>x</em> or
+  lower</li>
+  <li>Active network connection for certain operations, such as testing app
+  features that require it</li>
+    <li>adb integration enabled through <strong>Tools</strong> &gt;
+    <strong>Android</strong> &gt; <strong>Enable ADB Integration</strong>
+    </li>
 </ul>
 
+<h3 id="limitations">What's not supported</h3>
 
-<h2 id="troubleshooting">Troubleshooting Emulator Problems</h2>
+<p>The Android Emulator supports most features of a device, but doesn't
+include virtual hardware for:</p>
+<ul>
+<li>WiFi</li>
+<li>Bluetooth</li>
+<li>NFC</li>
+<li>SD card insert/eject</li>
+<li>Device-attached headphones</li>
+<li>USB</li>
+</ul>
+<p>The watch emulator for Android Wear doesn't support the Overview
+(Recent Apps) button, D-pad, and fingerprint sensor.</p>
 
-<p>The {@code adb} utility sees the emulator as an actual physical device. For this reason, you
-might have to use the {@code -d} flag with some common {@code adb} commands, such as
-<code>install</code>. The {@code -d} flag lets you specify which of several connected devices to use
-as the target of a command. If you don't specify {@code -d}, the emulator targets the first
-device in its list. For more information about {@code adb}, see <a
-href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>.</p>
+<p>While most end users of phones and tablets tend to use earlier API levels,
+Android Wear and Android TV users tend to use the latest releases. Using recent
+releases can give you a better experience using the emulator.
+</p>
 
-<p>For emulators running on Mac OS X, if you see an error {@code Warning: No DNS servers found}
-when starting the emulator, check to see whether you have an <code>/etc/resolv.conf</code> file. If
-not, please run the following line in a command window:</p>
-    <pre>ln -s /private/var/run/resolv.conf /etc/resolv.conf</pre>
+<h2 id="runningapp">Running an App in the Android Emulator</h2>
 
-<p>See <a href="{@docRoot}resources/faq/index.html">Frequently Asked Questions</a> for more
-troubleshooting information. </p>
+<p>You can run an app from an Android Studio project. Or, you can run an app
+that's been installed on the emulator as you would run any app on a device.</p>
+
+<p>To start the emulator and run an app in your project:</p>
+<ol>
+<li>Open an Android Studio project and select Run <img src="{@docRoot}images/tools/e-irun.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Run icon" />.</li>
+  <p>The <em>Select Deployment Target</em> dialog appears.</p>
+<img src="{@docRoot}images/tools/e-selectdeploymenttarget.png"
+style="height:250px" alt="Select Deployment Target dialog" />
+<li>If you receive an error or warning message at the top of the dialog, click
+the link to correct the problem or get more information.</li>
+<p>The <strong>No USB devices or running emulators detected</strong> warning
+means that you don’t currently have any emulators running, or any detected
+hardware devices connected to your computer. If you
+don’t have hardware devices connected to your computer, or any emulators
+running, you can ignore it. </p>
+<p>Some errors you must fix before you can continue, such as certain Hardware
+Accelerated Execution Manager (Intel® HAXM) errors.</p>
+<li>In the <em>Select Deployment Target</em> dialog, select an existing emulator
+definition, and then click <strong>OK</strong>.</p>
+<p>If you don’t see a definition you want to use, click <strong>Create New
+Emulator</strong> to launch the AVD Manager. After you define a new AVD, in
+the <em>Select Deployment
+Target</em> dialog, click <strong>OK</strong>.</p>
+<p>If you want to use this emulator definition as the default for your project,
+select <strong>Use same selection for future launches</strong>.</p>
+<p>The emulator launches and displays your app.</p>
+<li>Test your app in the emulator.</li>
+<p>You can use the features described in the following sections:</p>
+<ul>
+<li><a href="#navigate">Navigating on the Screen</a></li>
+<li><a href="#tasks">Performing Basic Tasks in the Emulator</a></li>
+<li><a href="#extended">Working With Extended Controls, Settings, and Help</a></li>
+</ul>
+<li>To close the emulator, click Close <img src="{@docRoot}images/tools/e-iclose.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Close icon" />.</li>
+  <p>The emulator device stores the installed app so you can run it again, if
+  needed. You need to uninstall an app to remove it. If you run the project
+  again on the same emulator, it replaces the app with the new version.</p>
+</ol>
+
+<h2 id="runningemulator">Launching the Android Emulator Without Running an App</h2>
+
+<p>To start the emulator:</p>
+<ol>
+<li><a href="{@docRoot}tools/devices/managing-avds.html">Open the AVD Manager</a>.</li>
+<li>Double-click an AVD, or click Run <img src="{@docRoot}images/tools/e-irun.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Run icon" />.</li>
+  <p>The Android Emulator appears.</p>
+  <p>While the emulator is running, you can run Android Studio projects and
+  choose the
+  emulator as the target device. You can also drag one or more APKs onto the
+  emulator to install them, and then run them.</p>
+</ol>
+
+
+<h2 id="navigate">Navigating on the Screen</h2>
+
+<p>Use your computer mouse pointer to mimic your finger on the touchscreen;
+select menu items and input fields; and click buttons and controls.
+Use your computer keyboard to type characters and enter emulator shortcuts.</p>
+<table  border="0" style="clear:left;">
+<tr>
+    <th scope="col">Feature</th>
+    <th scope="col">Description</th>
+  </tr>
+
+ <tr>
+    <td>Swipe the screen</td>
+    <td>Point to the screen, press and hold the primary mouse button, swipe
+    across the screen, and then release.</td>
+ </tr>
+ <tr>
+    <td>Drag an item</td>
+    <td>Point to an item on the screen, press and hold the primary mouse
+    button, move the item, and then release.</td>
+ </tr>
+ <tr>
+    <td>Tap <div>(touch)</div></td>
+    <td>Point to the screen, press the primary mouse button, and then release.
+    For example, you could click a text field to start typing in it, select an
+    app, or press a button.</td>
+ </tr>
+ <tr>
+    <td>Double tap</td>
+    <td>Point to the screen, press the primary mouse button quickly twice,
+    and then release.</td>
+ </tr>
+ <tr>
+    <td>Touch and hold</td>
+    <td>Point to an item on the screen, press the primary mouse button, hold,
+    and then release. For example, you could open options for an item. </td>
+ </tr>
+ <tr>
+    <td>Type</td>
+    <td>You can type in the emulator by using your computer keyboard, or using
+    a keyboard that pops up on the emulator screen. For example, you could
+    type in a text field after you selected it.</td>
+ </tr>
+ <tr>
+    <td><nobr>Pinch and spread</nobr></td>
+    <td><div>Pressing Alt or Option (⌥) brings up a pinch gesture multi-touch
+    interface. The mouse acts as the first finger, and across the anchor point
+    is the second finger. Drag the cursor to move the first point.</div>
+    <div>Clicking the left mouse button acts like touching down both points, and
+    releasing acts like picking both up.</div></td>
+ </tr>
+</table>
+
+<h2 id="tasks">Performing Basic Tasks in the Emulator</h2>
+
+<p>The panel on the right side of the emulator lets you perform various tasks.
+You can also drag files onto the emulator to install apps and download files.
+</p>
+<table  border="0" style="clear:left;">
+ <tr>
+    <th scope="col">Feature</th>
+    <th scope="col">Description</th>
+    <th scope="col">Keyboard Shortcut</th>
+ </tr>
+ <tr>
+    <td>Close<br><img src="{@docRoot}images/tools/e-iclose.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Close icon" /></td>
+    <td>Close the emulator.</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>Minimize<br><img src="{@docRoot}images/tools/e-iminimize.png"
+  style="vertical-align:sub;margin:0;height:9px" alt="Minimize icon" /></td>
+    <td>Minimize the emulator window.</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>Resize</td>
+    <td>Resize the emulator as you would any other operating system window. The
+emulator maintains an aspect ratio appropriate for your device.</td>
+    <td>⌘↑ and ⌘↓</td>
+ </tr>
+ <tr>
+    <td>Power<br><img src="{@docRoot}images/tools/e-ipower.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Power icon" /></td>
+    <td>Click to turn the screen on or off.<br>Click and hold to turn the device
+    on or off. </td>
+    <td><div>Ctrl+P</div> <div>⌘P</div></td>
+ </tr>
+ <tr>
+    <td>Volume Up<br><img src="{@docRoot}images/tools/e-ivolumeup.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Volume Up icon" /></td>
+    <td>Click to view a slider control and turn the volume up. Click again to
+    turn it up more, or use the slider control to change the volume. </td>
+    <td><div>Ctrl+=</div><div>⌘=</div></td>
+ </tr>
+ <tr>
+    <td>Volume Down<br><img src="{@docRoot}images/tools/e-ivolumedown.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Volume Down icon" /></td>
+    <td>Click to view a slider control and turn the volume down. Click again to
+    turn it down more, or use the slider control to change the volume. </td>
+    <td><div>Ctrl+-</div><div>⌘-<div></td>
+ </tr>
+ <tr>
+    <td>Rotate Left<br><img src="{@docRoot}images/tools/e-irotateleft.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Rotate Left icon" /></td>
+    <td>Rotate the phone 90 degrees counterclockwise.</td>
+    <td><div>Ctrl+Left</div><div>⌘←</div></td>
+ </tr>
+ <tr>
+    <td>Rotate Right<br><img src="{@docRoot}images/tools/e-irotateright.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Rotate Right icon" /></td>
+    <td>Rotate the phone 90 degrees clockwise.</td>
+    <td><div>Ctrl+Right</div><div>⌘→</div></td>
+ </tr>
+ <tr>
+    <td>Take Screenshot<br><img src="{@docRoot}images/tools/e-itakescreenshot.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Take Screenshot icon" />
+  </td>
+    <td>Click to take a screenshot of the device. The default save location is
+    your computer desktop. To change the save location, select
+    <strong>…</strong> > <strong>Settings</strong>. The emulator creates a
+    file with the name <code>Screenshot_<em>yyyymmdd-hhmmss</em>.png</code>
+    using the year, month, day, hour, minute, and second of the capture, for
+    example, <code>Screenshot_20160219-145848.png</code>. </td>
+    <td><div>Ctrl+S</div><div>⌘S<div></td>
+ </tr>
+ <tr>
+    <td><nobr>Enter Zoom Mode</nobr><br><img src="{@docRoot}images/tools/e-izoom.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Enter Zoom Mode icon" />
+  </td>
+    <td><p>Click so the cursor changes to the zoom icon:</p>
+<ul>
+  <li> Left-click the screen to zoom in by 25%, up to a maximum of about twice
+  the screen resolution of the virtual device.
+  <li> Right-click to zoom out.
+  <li> Left-click and drag to select a box-shaped area to zoom in on.
+  <li> Right-click and drag a selection box to reset to default zoom.
+  <li> Ctrl-click to touch the screen while in zoom mode.
+</ul>
+<p>Click Enter Zoom Mode again to return to normal screen size.</p></td>
+    <td><div>Ctrl+Z</div><div>⌘Z</div>
+    <div>While in zoom mode:</div>
+    <div>Ctrl+Up</div><div>Ctrl+Down</div>
+    <div>Ctrl+Shift+Up</div><div>Ctrl+Shift+Down</div>
+    <div>Ctrl+Shift+Left</div><div>Ctrl+Shift+Right</div>
+    <div>⌘↑ and ⌘↓</div>
+    <div>⇧⌘↑ and ⇧⌘↓</div>
+    <div>⇧⌘← and ⇧⌘→</div></td>
+ </tr>
+ <tr>
+    <td>Back<br><img src="{@docRoot}images/tools/e-iback.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Back icon" /></td>
+    <td>Return to the previous screen, or close a dialog box, an options menu,
+    the Notifications panel, or the onscreen keyboard. </td>
+    <td><div>Ctrl+Backspace</div>
+    <div>⌘⌫</div></td>
+ </tr>
+ <tr>
+    <td>Home<br><img src="{@docRoot}images/tools/e-ihome.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Home icon" /></td>
+    <td>Return to the Home screen. Press and hold to open the item specific to
+    your API level. </td>
+    <td><div>Ctrl+H</div><div>⌘⇧H</div></td>
+ </tr>
+ <tr>
+    <td><div>Overview<br><img src="{@docRoot}images/tools/e-ioverview.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Overview icon" /></div>
+  <div>(Recent Apps)</div></td>
+    <td>Tap to open a list of thumbnail images of apps you’ve worked with
+    recently. To open an app, tap it. To remove a thumbnail from the list,
+    swipe it left or right. This button isn't supported for Android Wear.</td>
+    <td><div>Ctrl+O</div><div>⌘O</div></td>
+ </tr>
+ <tr>
+    <td>Menu</td>
+    <td>Type the keyboard shortcut to simulate the Menu button, for example,
+    to open the menu for the selected app.</td>
+    <td><div>Ctrl+M</div><div>⌘M</div></td>
+ </tr>
+ <tr>
+    <td>More<br><img src="{@docRoot}images/tools/e-imore.png"
+  style="vertical-align:sub;margin:0;height:9px" alt="More icon" /></td>
+    <td>Click to access other features and settings, described in the next
+    table.</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>Install an APK</td>
+    <td>Drag an APK file onto the emulator screen. An APK Installer dialog
+    appears. When the installation completes, you can view the app in your
+    apps list.The app didn’t install if a dialog appears that says “APK failed
+    to install.”</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>Add a file</td>
+    <td>Drag any file onto the emulator screen. It’s placed in the
+    <code>/sdcard/Download</code> directory. Navigate to the file using the
+    method for the API level. For example, for API 22, this is the navigation
+    path: <strong>Settings</strong> > <strong>Device: Storage & USB</strong>
+    &gt; <strong>Internal Storage</strong> &gt; <strong>Explore</strong>
+    (Virtual SD Card). </td>
+    <td></td>
+ </tr>
+ <tr>
+    <td>Toggle trackball mode</td>
+    <td></td>
+    <td>F6</td>
+ </tr>
+</table>
+
+<h2 id="extended">Working With the Extended Controls, Settings, and Help</h2>
+
+<p>The extended controls let you send data, change device properties, control
+apps, and more. To access the controls, select <strong>…</strong> in the
+emulator panel and then select the option you want in the left panel of the
+<em>Extended Controls</em> dialog.</p>
+
+<table  border="0" style="clear:left;">
+ <tr>
+    <th scope="col">Feature</th>
+    <th scope="col">Description</th>
+    <th scope="col">Keyboard Shortcuts</th>
+ </tr>
+ <tr>
+    <td>Location</td>
+    <td>
+<p>The emulator lets you simulate “my location” information: the location where
+the emulated device is currently located. For example, if you click My Location
+<img src="{@docRoot}images/tools/e-ilocation.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="My Location icon" />
+ in Google Maps and then send a location, the map shows it.</p>
+ <p>To send a GPS location:</p>
+<ol>
+  <li> Select <strong>Decimal</strong> or <strong>Sexagesimal</strong>.</li>
+  <li> Specify the location.</li>
+
+<p>In decimal mode, enter a <strong>Latitude</strong> value in the range -90.0
+to +90.0 degrees and a <strong>Longitude</strong> value in the range -180.0 to
++180.0 degrees.</p>
+<p>In sexigesimal mode, enter a three-part <strong>Latitude</strong> value in
+the range -90 to +90 degrees, 0 to 59 minutes, and 0.0 to 60.0
+seconds. Enter a <strong>Longitude</strong> value in the range -180 to +180
+degrees, 0 to 59 minutes, and 0.0 to 60.0 seconds.</p>
+<p>For the latitude, - indicates south and + indicates north; for the longitude,
+- indicates west and + indicates east. The + is optional.</p>
+<p>Optionally specify an <strong>Altitude</strong> value in the range
+-1,000.0 to +10,000.0 meters.</p>
+
+  <li> Click <strong>Send</strong>.</li>
+</ol>
+<p>To use geographic data from a GPS exchange format (GPX) or Keyhole Markup
+Language (KML) file:</p>
+<ol>
+  <li> Click <strong>Load GPX/KML</strong>.</li>
+  <li> In the file dialog, select a file on your computer and click
+  <strong>Open</strong>.</li>
+  <li> Optionally select a <strong>Speed</strong>.</li>
+<p>The speed defaults to the <strong>Delay</strong> value (<strong>Speed
+1X</strong>). You can increase the speed by double (<strong>Speed</strong>
+<strong>2X</strong>), triple (<strong>Speed 3X</strong>), and so on.</p>
+
+  <li> Click Run <img src="{@docRoot}images/tools/e-irun.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Run icon" />.</li>
+</ol>
+</td>
+    <td><div>Ctrl+Shift+L</div><div>⇧⌘L</div></td>
+ </tr>
+ <tr>
+    <td>Cellular</td>
+    <td><p>The emulator lets you simulate various network conditions. You can
+    approximate the network speed for different network protocols, or you can
+    specify <strong>Full</strong>, which transfers data as quickly as your
+    computer allows. Specifying a network protocol is always slower than
+    <strong>Full</strong>. You can also specify the voice and data network
+    status, such as roaming. The defaults are set in the AVD.</p>
+    <p>Select a <strong>Network type</strong>:</p>
+<ul>
+  <li> GSM - Global System for Mobile Communications</li>
+  <li> HSCSD - High-Speed Circuit-Switched Data</li>
+  <li> GPRS - Generic Packet Radio Service</li>
+  <li> EDGE - Enhanced Data rates for GSM Evolution</li>
+  <li> UMTS - Universal Mobile Telecommunications System</li>
+  <li> HSPDA - High-Speed Downlink Packet Access</li>
+  <li> Full (default)</li>
+</ul>
+<p>Select a <strong>Voice status</strong>, <strong>Data status</strong>, or
+both:</p>
+<ul>
+  <li> Home (default)</li>
+  <li> Roaming</li>
+  <li> Searching</li>
+  <li> Denied (emergency calls only)</li>
+  <li> Unregistered (off)</li>
+</ul>
+</td>
+    <td><div>Ctrl+Shift+C</div><div>⇧⌘C</td>
+ </tr>
+ <tr>
+    <td>Battery</td>
+    <td><p>You can simulate the battery properties of a device to see how your
+    app performs under different conditions. To select a <strong>Charge
+    level</strong>, use the slider control.</p>
+    <p>Select a <strong>Charger connection</strong> value:</p>
+<ul>
+  <li>None</li>
+  <li>AC charger</li>
+</ul>
+<p>Select a <strong>Battery health</strong> value:</p>
+<ul>
+  <li> Good (default)</li>
+  <li> Failed</li>
+  <li> Dead</li>
+  <li> Overvoltage</li>
+  <li> Overheated</li>
+  <li> Unknown</li>
+</ul>
+<p>Select a <strong>Battery status </strong>value:</p>
+<ul>
+  <li> Unknown</li>
+  <li> Charging (default)</li>
+  <li> Discharging</li>
+  <li> Not charging</li>
+  <li> Full</li>
+</ul>
+</td>
+    <td><div>Ctrl+Shift+B</div><div>⇧⌘B</div></td>
+ </tr>
+ <tr>
+    <td>Phone</td>
+    <td><p>The emulator lets you simulate incoming phone calls and text
+    messages. Note that the information flow is one way, from the control to
+    the emulator. For example, the control doesn’t change its state if the
+    emulator hangs up; you need to end the call in the control.</p>
+    <p>To initiate a call to the emulator:</p>
+<ol>
+  <li> Select or type a phone number in the <strong>From</strong> field.</li>
+  <li> Click <strong>Call Device</strong>.</li>
+  <li> Optionally click <strong>Hold Call</strong> to put the call on hold.</li>
+  <li> To end the call, click <strong>End Call</strong>.</li>
+</ol>
+<p>To send a text message to the emulator:</p>
+<ol>
+  <li> Select or type a phone number in the <strong>From</strong> field.</li>
+  <li> Type a message in the <strong>SMS message</strong> field.</li>
+  <li> Click <strong>Send Message</strong>.</li>
+</ol>
+</td>
+    <td><div>Ctrl+Shift+P</div><div>⇧⌘P</div></td>
+ </tr>
+ <tr>
+    <td>Directional Pad</td>
+    <td><p>If the AVD has the directional pad enabled in the hardware profile,
+    you can use the directional pad controls with the emulator. However, not
+    all devices can support the directional pad; for example, an Android watch.
+    The buttons simulate the following actions:</p>
+<img src="{@docRoot}images/tools/e-dpad.png"
+  style="vertical-align:sub;margin:0;width:244px" alt="Directional Pad Control" />
+</td>
+    <td><div>Ctrl+Shift+D</div><div>⇧⌘D</div></td>
+ </tr>
+ <tr>
+    <td>Fingerprint</td>
+    <td><p>This control can simulate 10 different fingerprint scans. You can
+    use it to test fingerprint integration in your app. This feature isn't
+    supported for Android Wear.</p>
+    <p>To simulate a fingerprint scan on the virtual device:</p>
+<ol>
+  <li> Prepare an app to receive a fingerprint.</li>
+  <li> Select a <strong>Fingerprint</strong> value.</li>
+  <li> Click <strong>Touch Sensor</strong>.</li>
+</ol>
+</td>
+    <td><div>Ctrl+Shift+F</div><div>⇧⌘F</div></td>
+ </tr>
+ <tr>
+    <td>Settings</td>
+    <td><p>You can specify the following settings:</p>
+<ul>
+  <li> <strong>Emulator window theme</strong> - Select Light or Dark.</li>
+  <li> <strong>Send keyboard shortcuts to</strong> - By default, some keyboard
+  combinations will trigger emulator control shortcuts. If you’re developing
+  an app that includes keyboard shortcuts, such as one targeted at
+  devices with Bluetooth keyboards, you can change this setting to send
+  <em>all</em> keyboard input to the virtual device, including input
+  that would be a shortcut in the emulator.</li>
+  <li> <strong>Screenshot save location</strong> - Click the folder icon to
+  specify a location to save screenshots of the emulator screen.</li>
+  <li> <strong>Use detected ADB location</strong> - If you're running the
+  emulator from Android Studio, you should select this setting (the default).
+  If you run the emulator from outside Android Studio and want it to use a
+  specific adb executable, deselect this option and specify the SDK Tools
+  location. If this setting is incorrect, features such as drag-and-drop app
+  install and file copy, and screenshot capture, won't work. </li>
+  <li> <strong>When to send crash reports</strong> - Select Always, Never, or
+  Ask. </li>
+</ul>
+</td>
+    <td>Ctrl+Shift+S<br>⇧⌘S</td>
+ </tr>
+ <tr>
+    <td>Help > Keyboard Shortcuts</td>
+    <td><p>See the keyboard shortcuts that the emulator accepts. For the
+    shortcuts to work, you need to:</p>
+<ul>
+  <li>Select <strong>Settings</strong> > <strong>Send keyboard shortcuts
+  to</strong> > <strong>Emulator controls (default)</strong>.</li>
+</ul>
+</td>
+    <td>F1<br>⌘/</td>
+ </tr>
+ <tr>
+    <td>Help > Emulator Help</td>
+    <td><p>To go to the online documentation for the emulator, click
+    <strong>Documentation</strong>.</p>
+    <p>To file a bug against the emulator, click <strong>File a Bug</strong>.
+    </p>
+    <p>To make suggestions, click <strong>Send Feedback</strong>.</p>
+    <p>All of these links require an internet connection and a browser.</p> </td>
+    <td>F1<br>⌘/</td>
+ </tr>
+ <tr>
+    <td>Help > About</td>
+    <td><p>See which adb port the emulator uses, as well as the Android and
+    emulator version numbers. Compare the latest available emulator version
+    with your version to determine if you have the latest software installed.
+    </p>
+    <p>The emulator serial number is <strong>emulator-<em></strong>adb_port</em>,
+    which you can specify as an adb command line option, for example.</p></td>
+    <td>F1<br>⌘/</td>
+ </tr>
+</table>
+
+
+
+
+
diff --git a/docs/html/tools/devices/managing-avds.jd b/docs/html/tools/devices/managing-avds.jd
index 4ca8588..8ba554e 100644
--- a/docs/html/tools/devices/managing-avds.jd
+++ b/docs/html/tools/devices/managing-avds.jd
@@ -1,297 +1,680 @@
-page.title=Managing AVDs with AVD Manager
-parent.title=Managing Virtual Devices
-parent.link=index.html
+page.title=Managing AVDs with the AVD Manager
 @jd:body
 
   <div id="qv-wrapper">
     <div id="qv">
       <h2>In this document</h2>
-
       <ol>
-        <li><a href="#createavd">Creating an AVD</a>
-          <ol>
-            <li><a href="#CreateDefinition">Creating a device definition</a></li>
-            <li><a href="#hardwareopts">Hardware options</a></li>
-          </ol>
+        <li><a href="#viewing">Viewing and Managing Your AVDs</a></li>
+        <li><a href="#createavd">Creating an AVD</a></li>
+        <li><a href="#createhp">Creating a Hardware Profile</a></li>
+        <li><a href="#workingavd">Working With Existing AVDs</a></li>
+        <li><a href="#workinghp">Working With Existing Hardware Profiles</a>
         </li>
+        <li><a href="#emulator">Running and Stopping an Emulator, and
+        Clearing Data</li>
+        <li><a href="#importexporthp">Importing and Exporting Hardware
+        Profiles</li>
+        <li><a href="#hpproperties">Hardware Profile Properties</a></li>
+        <li><a href="#avdproperties">AVD Properties</a></li>
         <li><a href="#skins">Creating Emulator Skins</a></li>
       </ol>
+      <h2>Dependencies and prerequisites</h2>
+      <ul>
+      <li>Android Studio 2.0 or higher</li>
+      <li>SDK Tools 25.0.10 or higher</li>
+      <li>Active network connection for certain operations, such as downloading
+      system images</li>
+      <li>adb integration enabled through <strong>Tools</strong> &gt;
+      <strong>Android</strong> &gt;
+      <strong>Enable ADB Integration</strong></li>
+    </ul>
     </div>
   </div>
 
-  <p>The AVD Manager is a tool you can use
-  to create and manage Android virtual devices (AVDs), which define device configurations
-  for the <a href="{@docRoot}tools/devices/emulator.html"
-  >Android Emulator</a>.</p>
+  <p>An Android Virtual Device (AVD) definition lets you define the
+  characteristics of an Android phone, tablet, Android Wear, or Android TV
+  device that you want to simulate in the
+ <a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a>.
+  The AVD Manager helps you easily create and manage AVDs. </p>
 
-<p>To launch the AVD Manager:</p>
+  <p>To effectively test your app, you should create an AVD that models each
+  device type that your app is designed to support. For example, we recommend
+  that you create an AVD for each API level that's equal to and higher than the
+  minimum version you've specified in your manifest
+  <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"
+  style="white-space: nowrap;"
+  >{@code &lt;uses-sdk>}</a> tag.</p>
+
+  <p>An AVD contains a hardware profile, system image, skin, and other
+  properties.</p>
+
+  <p>The hardware profile defines the characteristics of a device as
+  shipped from the factory. The AVD Manager comes preloaded with certain
+  hardware profiles, such as Nexus phone devices, and you can define and import
+  hardware profiles as needed. You can override some of the settings in your
+  AVD, if needed.</p>
+
+  <p>The AVD Manager helps you choose a system image for your AVD by providing
+  recommendations. It also lets
+  you download system images, some with add-on libraries, like Google APIs,
+  which your app might require. x86 system images run the fastest in the
+  emulator. Android Wear and Android TV devices tend to run best (and have
+  the largest installed base) on recent releases, while users of Android phones
+  and tablets tend to use slightly older releases, as shown in the
+  <a href="{@docRoot}about/dashboards/index.html">API level
+  dashboards</a>.</p>
+
+  <p>An emulator skin specifies the appearance of a device. The AVD Manager
+  provides some predefined skins. You can also define your own, or use skins
+  provided by third parties.</p>
+
+  <p>Just as with a real device, for apps to use certains features defined in an
+  AVD, such as the camera, it must have the corresponding
+  <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;</code></a>
+  setting in the app manifest.</p>
+
+<h2 id="viewing">Viewing and Managing Your AVDs</h2>
+
+<p>The AVD Manager lets you manage your AVDs all in one place.</p>
+
+<p>To run the AVD Manager:</p>
+
 <ul>
-  <li>In Android Studio, select <strong>Tools &gt; Android &gt; AVD Manager</strong>, or click
-  the AVD Manager icon <img src="{@docRoot}images/tools/avd-manager-studio.png"
-  style="vertical-align:bottom;margin:0;height:19px"> in the toolbar.</li>
-
-  <li>Or, use the command line to navigate to your SDK's <code>tools/</code> directory and execute:
-  <pre class="no-prettyprint classic">$ android avd</pre>
-  </li>
+  <li> In Android Studio, select <strong>Tools</strong> &gt;
+  <strong>Android</strong> &gt; <strong>AVD Manager</strong>.</li>
+  <li> Click AVD Manager <img src="{@docRoot}images/tools/avd-manager-studio.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="AVD Manager icon">
+  in the toolbar.</li>
 </ul>
 
-  <p>The AVD Manager main screen shows your current virtual devices, as shown in figure 1.</p>
+<p>The AVD Manager appears.</p>
 
+<img src="{@docRoot}images/tools/avd-main.png" alt="AVD Manager main window" />
 
-   <img src="{@docRoot}images/studio-avdmgr-firstscreen.png" alt="">
-   <p class="img-caption"><strong>Figure 1.</strong> The AVD Manager main screen shows your current
-   virtual devices.</p>
+<p>It displays any AVDs you’ve already defined. When you first install
+Android Studio, it creates one AVD. If you defined AVDs for Android Emulator
+24.0.<em>x</em> or lower, you need to recreate them.</p>
 
+<p>From this page you can:</p>
 
-<p class="note"><strong>Note:</strong> If you launch the AVD Manager from the command line, the UI
-is different than how it appears in Android Studio, as documented here. Most of the same
-functionality is available, but the command-line version of the AVD Manager
-is currently not documented.</p>
+<ul>
+  <li> Define a new <a href="#createavd">AVD</a> or
+  <a href="#createhp">hardware profile</a>.</li>
+  <li> Edit an existing <a href="#workingavd">AVD</a> or
+  <a href="#workinghp">hardware profile</a>.</li>
+  <li> Delete an <a href="#workingavd">AVD</a> or
+  <a href="#workinghp">hardware profile</a>.</li>
+  <li> <a href="#importexporthp">Import or export</a> hardware profile
+  definitions.</li>
+  <li> <a href="#emulator">Run</a> an AVD to start the emulator.</li>
+  <li> <a href="#emulator">Stop</a> an emulator.</li>
+  <li> <a href="#emulator">Clear</a> data and start fresh, from the same state
+  as when you first ran the emulator.</li>
+  <li> <a href="#workingavd">Show</a> the associated AVD <code>.ini</code> and
+  <code>.img</code> files on disk.</li>
+  <li> <a href="#workingavd">View</a> AVD configuration details that you can
+  include in any bug
+  reports to the Android Studio team.</li>
+</ul>
 
 
   <h2 id="createavd">Creating an AVD</h2>
 
-  <p>You can create as many AVDs as you would like to use with the Android Emulator.
-  To effectively test your app, you should create an AVD that models each device type for which
-  you have designed your app to support. For instance, you should create an AVD for each
-  API level equal to and higher than the minimum version you've specified in your manifest
-  <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html" style="white-space: nowrap;"
-  >{@code &lt;uses-sdk>}</a> tag.</p>
+  <p>You can <a href="#newavd">create a new AVD</a> from the beginning, or
+  <a href="#copyavd">duplicate an AVD</a> and change some properties.</p>
 
-  <p>To create an AVD based on an existing device definition:</p>
+  <p id="newavd">To create a new AVD:</p>
 
   <ol>
-    <li>From the main screen (figure 1), click <strong>Create Virtual Device</strong>.</li>
+    <li id="selecthardwarepage">From the
+    <a href="#viewing"><em>Your Virtual Devices</em></a> page of
+    the AVD Manager, click <strong>Create Virtual Device</strong>.</li>
 
-    <li><p>In the Select Hardware window, select a device configuration, such as Nexus 6,
-    then click <strong>Next</strong>.</p>
+    <p>Alternatively,
+    <a href="{@docRoot}training/basics/firstapp/running-app.html">run your
+    app</a> from within Android Studio. In the <em>Select Deployment Target</em>
+    dialog, click <strong>Create New Emulator</strong>.</p>
 
-      <img src="{@docRoot}images/studio-avdmgr-selecthdwr.png" alt="">
-      <p class="img-caption"><strong>Figure 2.</strong> The Select Hardware window.</p>
+    <p>The <em>Select Hardware</em> page appears.</p>
+    <img src="{@docRoot}images/tools/avd-hardwareprofile.png"
+      alt="Hardware Profile page of the AVD Manager">
+
+    <li>Select a hardware profile,
+    and then click <strong>Next</strong>.</li>
+
+    <p>If you don't see the hardware profile you want, you can
+    <a href="#createhp">create</a>
+    or <a href="#importexporthp">import</a> a hardware profile.</p>
+
+      <p  id="systemimagepage">The <em>System Image</em> page appears.</p>
+      <img src="{@docRoot}images/tools/avd-systemimage.png"
+      alt="System Image page of the AVD Manager">
+
     </li>
-    <li>Select the desired system version for the AVD and click <strong>Next</strong>.
+    <li>Select the system image for a particular API level, and then click
+    <strong>Next</strong>.
     </li>
-    <li>Verify the configuration settings, then click <strong>Finish</strong>.
-    <p>If necessary, click <strong>Show Advanced Settings</strong> to select a custom skin
-      for the hardware profile and adjust other hardware settings.</p>
+    <p>The <strong>Recommended</strong> tab lists recommended system images. The
+    other tabs include a more complete list. The right pane describes the
+    selected system image. x86 images run the fastest in the emulator.</p>
+    <p>If you see <strong>Download</strong> next to the system image, you need
+    to click it to download the system image. You must be connected to the
+    internet to download it.</p>
+
+    <p id="verifyconfigpage">The <em>Verify Configuration</em> page appears.</p>
+      <img src="{@docRoot}images/tools/avd-verifyconfig.png"
+      alt="Verify Configuration page of the AVD Manager">
+
+    <li>Change <a href="#avdproperties">AVD properties</a> as needed,
+    and then click <strong>Finish</strong>.
+    <p>Click <strong>Show Advanced Settings</strong> to show more
+    settings, such as the skin.</p>
     </li>
-  </ol>
 
-  <p>To launch the AVD in the Android Emulator, click the launch button
-  <img src="{@docRoot}images/tools/as-avd-start.png"
-  style="vertical-align:bottom;margin:0;height:19px">
-   in the list of AVDs.</p>
+  <p>The new AVD appears in the <em>Your Virtual Devices</em> page or the
+  <em>Select Deployment Target</em> dialog.</p>
+</ol>
 
 
-<h3 id="CreateDefinition">Creating a device definition</h3>
+    <p id="copyavd">To create an AVD starting with a copy:</p>
 
-<p>In case the available device definitions do not match the device type you'd like to emulate,
-you can create a custom device definition for your AVD:</p>
+    <ol>
+    <li>From the
+    <a href="#viewing"><em>Your Virtual Devices</em></a> page of
+    the AVD Manager, right-click an AVD and select
+    <strong>Duplicate</strong>.</li>
+
+    <p>Or click Menu
+    <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
+    style="vertical-align:sub;margin:0;height:17px">
+    and select <strong>Duplicate</strong>.</p>
+
+    <p>The <a href="#verifyconfigpage"><em>Verify Configuration</em></a>
+    page appears.</p>
+
+    <li>Click <strong>Change</strong> or <strong>Previous</strong> if you
+    need to make changes on the
+    <a href="#systemimagepage"><em>System Image</em></a> and
+    <a href="#hardwareprofilepage"><em>Hardware Profile</em></a> pages.</li>
+
+    <li>Make your changes, and then click <strong>Finish</strong>.</li>
+
+    <p>The AVD appears in the <em>Your Virtual Devices</em> page.
+
+</ol>
+
+
+<h2 id="createhp">Creating a Hardware Profile</h2>
+
+<p>The AVD Manager provides predefined hardware profiles for common devices so
+you can easily add them to your AVD definitions. If
+you need to define a different device, you can create a new hardware profile.
+You can <a href="#newhp">define a new hardware profile</a> from the beginning,
+or <a href="#copyavd">copy a hardware profile</a> as a start. The preloaded
+hardware profiles aren't editable.</p>
+
+<p id="newhp">To create a new hardware profile from the beginning:</p>
 <ol>
-  <li>From the main screen (figure 1), click <strong>Create Virtual Device</strong>.</li>
-  <li>To begin you custom device by using an existing device profile as a template, select
-  a device profile then click <strong>Clone Device</strong>.
-  <p>Or, to start from scratch, click <strong>New Hardware Profile</strong>.</p>
-  </li>
-  <li>
-<p>The following Configure Hardware Profile window (figure 3) allows you to specify various
-configurations such as the screen size, memory options, input type, and sensors.</p>
+  <li>In the <a href="#selecthardwarepage"><em>Select Hardware</em></a>
+  page, click <strong>New Hardware Profile</strong>.</li>
 
-    <p>When you're done configuring the device, click <strong>Finish</strong>.</p>
+  <li>In the <em>Configure Hardware Profile</em> page, change the
+  <a href="#hpproperties">hardware profile properties</a> as
+  needed.</li>
 
-      <img src="{@docRoot}images/studio-avdmgr-confighardwareprof.png" alt="">
-      <p class="img-caption"><strong>Figure 3.</strong> The Configure Hardware window when
-      creating a custom device configuration.</p>
-    </li>
-  <li>Your custom device configuration is now available in the list of device definitions
-  (shown after you click <strong>Create Virtual Device</strong>). To continue preparing an AVD
-  with your custom device configuration, select the new configuration and follow the instructions
-  above to create an AVD with an existing device definition (and select your new definition).</li>
+  <li>Click <strong>Finish</strong>.</li>
+  <p>Your new hardware profile appears in the <em>Select Hardware</em> page.
+  You can optionally <a href="#selecthardwarepage">create an AVD</a>
+  that uses the hardware profile
+  by clicking <strong>Next</strong>. Or, click <strong>Cancel</strong> to return
+  to the <em>Your Virtual Devices</em> page or <em>Select Deployment Target</em>
+  dialog.</p>
+ </ol>
 
-  </ol>
+<p id="copyhp">To create a hardware profile starting with a copy:</p>
+
+  <ol>
+  <li>In the <a href="#selecthardwarepage"><em>Select Hardware</em></a>
+  page, select a hardware profile and click <strong>Clone Device</strong>.</li>
+
+  <p>Or right-click a hardware profile and select <strong>Clone</strong>.</li>
+
+  <li>In the <em>Configure Hardware Profile</em> page, change the
+  <a href="#hpproperties">hardware profile properties</a> as
+  needed.</li>
+
+  <li>Click <strong>Finish</strong>.</li>
+
+  <p>Your new hardware profile appears in the <em>Select Hardware</em> page.
+  You can optionally <a href="#selecthardwarepage">create an AVD</a>
+  that uses the hardware profile
+  by clicking <strong>Next</strong>. Or, click <strong>Cancel</strong> to return
+  to the <em>Your Virtual Devices</em> page or <em>Select Deployment Target</em>
+  dialog.</p>
+ </ol>
 
 
+<h2 id="workingavd">Working With Existing AVDs</h2>
 
-<h3 id="hardwareopts">Hardware options</h3>
+ <p>From the <a href="#viewing"><em>Your Virtual Devices</em></a> page, you can
+ perform the following operations on an existing AVD:</p>
+ <ul>
+  <li>To edit an AVD, click Edit
+  <img src="{@docRoot}images/tools/studio-advmgr-actions-edit-icon.png"
+  style="vertical-align:sub;margin:0;height:17px"> and
+  <a href="#copyavd">make your changes</a>.</li>
+  <li>To delete an AVD, right-click an AVD and select
+    <strong>Delete</strong>. Or click Menu
+    <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
+    style="vertical-align:sub;margin:0;height:17px">
+    and select <strong>Delete</strong>.</li>
+  <li>To show the associated AVD <code>.ini</code> and
+  <code>.img</code> files on disk, right-click an AVD and select
+    <strong>Show on Disk</strong>. Or click Menu
+    <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
+    style="vertical-align:sub;margin:0;height:17px">
+    and select <strong>Show on Disk</strong>.</li>
+  <li> To view AVD configuration details that you can
+  include in any bug reports to the Android Studio team, right-click an AVD and
+  select <strong>View Details</strong>. Or click Menu
+    <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
+    style="vertical-align:sub;margin:0;height:17px">
+    and select <strong>View Details</strong>.</li>
+  </ul>
 
-<p>If you are creating a new AVD, you can specify the following hardware options for the AVD
-to emulate:</p>
 
-  <table>
-    <tr>
-      <th>Characteristic</th>
+<h2 id="workinghp">Working With Existing Hardware Profiles</h2>
 
-      <th>Description</th>
+<p>From the <a href="#selecthardwarepage"><em>Select Hardware</em></a> page,
+you can
+ perform the following operations on an existing hardware profile:</p>
+ <ul>
+  <li>To edit a hardware profile, select it and click
+  <strong>Edit Device</strong>. Or right-click a hardware profile and select
+    <strong>Edit</strong>. Next,
+  <a href="#copyhp">make your changes</a>.</li>
 
-      <th>Property</th>
-    </tr>
+  <li>To delete a hardware profile, right-click it and select
+    <strong>Delete</strong>. </li>
+  </ul>
+  <p>You can't edit or delete the predefined hardware profiles.</p>
 
-    <tr>
-      <td>Device ram size</td>
+<h2 id="emulator">Running and Stopping an Emulator, and Clearing Data</h2>
 
-      <td>The amount of physical RAM on the device, in megabytes. Default value is "96".</td>
+ <p>From the <a href="#viewing"><em>Your Virtual Devices</em></a> page, you can
+ perform the following operations on an emulator:</p>
+ <ul>
+  <li>To run an emulator that uses an AVD, double-click the AVD. Or click Run
+  <img src="{@docRoot}images/tools/as-avd-start.png"
+  style="vertical-align:sub;margin:0;height:17px">.</li>
+  <li>To stop a running emulator, right-click an AVD and select
+    <strong>Stop</strong>. Or click Menu
+    <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
+    style="vertical-align:sub;margin:0;height:17px">
+    and select <strong>Stop</strong>.</li>
+  <li>To clear the data for an emulator, and return it to the same state as when
+  it was first defined, right-click an AVD and select
+    <strong>Wipe Data</strong>. Or click Menu
+    <img src="{@docRoot}images/tools/studio-advmgr-actions-dropdown-icon.png"
+    style="vertical-align:sub;margin:0;height:17px">
+    and select <strong>Wipe Data</strong>.</li>
+ </ul>
 
-      <td>hw.ramSize</td>
-    </tr>
+<h2 id="importexporthp">Importing and Exporting Hardware Profiles</h2>
 
-    <tr>
-      <td>Touch-screen support</td>
+<p>From the <a href="#selecthardwarepage"><em>Select Hardware</em></a> page,
+you can import and export hardware profiles:</p>
+ <ul>
+  <li>To import a hardware profile, click
+  <strong>Import Hardware Profiles</strong> and select the XML file containing
+  the definition on your computer.</li>
 
-      <td>Whether there is a touch screen or not on the device. Default value is "yes".</td>
+  <li>To export a hardware profile, right-click it and select
+    <strong>Export</strong>. Specify the location where you want to store the
+    XML file containing the definition.</i>
+  </ul>
 
-      <td>hw.touchScreen</td>
-    </tr>
+<h2 id="hpproperties">Hardware Profile Properties</h2>
 
-    <tr>
-      <td>Trackball support</td>
+<p>You can specify the following properties of hardware profiles in the
+<a href="#createhp"><em>Configure Hardware Profile</em></a> page. AVD
+configuration properties override hardware profile properties, and emulator
+properties that you set while the emulator is running override them both.</p>
 
-      <td>Whether there is a trackball on the device. Default value is "yes".</td>
+<p>The predefined hardware profiles included with the AVD Manager aren't
+editable. However, you can copy them and edit the copies.</p>
 
-      <td>hw.trackBall</td>
-    </tr>
 
-    <tr>
-      <td>Keyboard support</td>
+<table>
+ <tr>
+    <th scope="col">Hardware Profile Property</th>
+    <th scope="col">Description</th>
+ </tr>
+ <tr>
+    <td>Device Name</td>
+    <td>Name of the hardware profile. The name can contain uppercase or
+    lowercase letters,
+    numbers from 0 to 9, periods (.), underscores (_), and parentheses ( () ).
+    The name of the file storing the hardware profile is derived from the
+    hardware profile name.
+    </td>
+ </tr>
+ <tr>
+    <td>Device Type</td>
+    <td>Select one of the following:
+<ul>
+  <li> Phone/Tablet
+  <li> Android Wear
+  <li> Android TV
+</ul>
+</td>
+ </tr>
 
-      <td>Whether the device has a QWERTY keyboard. Default value is "yes".</td>
+ <tr>
+    <td>Screen Size </td>
+    <td>The physical size of the screen, in inches, measured at the diagonal.
+    If the size is larger than your computer screen, it’s reduced in size at
+    launch.</td>
+ </tr>
+ <tr>
+    <td>Screen Resolution</td>
+    <td>Type a width and height in pixels to specify the total number of pixels
+    on the simulated screen.</td>
 
-      <td>hw.keyboard</td>
-    </tr>
+ </tr>
+ <tr>
+    <td>Round</td>
+    <td>Select this option if the device has a round screen, such as an
+    Android Wear device. </td>
+ </tr>
+ <tr>
+    <td>Memory: RAM</td>
+    <td>Type a RAM size for the device and select the units, one of B (byte),
+    KB (kilobyte), MB (megabyte), GB (gigabyte), or TB (terabyte).</td>
+ </tr>
 
-    <tr>
-      <td>DPad support</td>
+ <tr>
+    <td>Input: Has Hardware Buttons (Back/Home/Menu)</td>
+    <td>Select this option if your device has hardware navigation buttons.
+    Deselect it if these buttons are implemented in software only. If you
+    select this option, the buttons won’t appear on the screen. You can use the
+    emulator side panel to “press” the buttons, in either case.</td>
+ </tr>
+ <tr>
+    <td>Input: Has Hardware Keyboard</td>
+    <td>Select this option if your device has a hardware keyboard. Deselect it
+    if it doesn’t. If you select this option, a keyboard won’t appear on the
+    screen. You can use your computer keyboard to send keystrokes to the
+    emulator, in either case.</td>
+ </tr>
+ <tr>
+    <td>Navigation Style</td>
+    <td><p>Select one of the following:</p>
+<ul>
+  <li> None - No hardware controls. Navigation is through the software.
+  <li> D-pad - Directional Pad support.
+  <li> Trackball
+  <li> Wheel
+</ul>
+  <p>These options are for actual hardware controls on the device itself.
+  However,
+  the events sent to the device by an external controller are the same.</p>
+</td>
+ </tr>
+ <tr>
+    <td>Supported Device States</td>
+    <td><p>Select one or both options:</p>
+<ul>
+  <li> Portrait - Oriented taller than wide.
+  <li> Landscape - Oriented wider than tall.
+</ul>
+<p>If you select both, you can switch between orientations in the emulator.
+You must select at least one option to continue.</p></td>
+ </tr>
+ <tr>
+    <td>Cameras</td>
+    <td><p>Select one or both options:</p>
+<ul>
+  <li> Back-Facing Camera - The lens faces away from the user.
+  <li> Front-Facing Camera - The lens faces toward the user.
+</ul>
+<p>Later, you can use a webcam or a photo provided by the emulator to simulate
+taking a photo with the camera.</td>
+ </tr>
 
-      <td>Whether the device has DPad keys. Default value is "yes".</td>
+ <tr>
+    <td>Sensors: Accelerometer</td>
+    <td>Select if the device has hardware that helps the device determine
+    its orientation.</td>
+ </tr>
+ <tr>
+    <td>Sensors: Gyroscope</td>
+    <td>Select if the device has hardware that detects rotation or twist.
+    In combination with an
+    accelerometer, it can provide smoother orientation detection and support
+    a six-axis orientation system.</td>
+ </tr>
+ <tr>
+    <td>Sensors: GPS</td>
+    <td>Select if the device has hardware that supports the Global Positioning
+    System (GPS)
+    satellite-based navigation system.</td>
+ </tr>
+ <tr>
+    <td>Sensors: Proximity Sensor</td>
+    <td>Select if the device has hardware that detects if the device is close
+    to your face during a
+    phone call to disable input from the screen.</td>
+ </tr>
+ <tr>
+    <td>Default Skin</td>
+    <td>Select a skin that controls what the device looks like when displayed
+    in the
+    emulator. Remember that specifying a screen size that's too small for the
+    resolution can mean that the screen is cut off, so you can't see the whole
+    screen. See
+    <a href="{@docRoot}tools/devices/managing-avds.html#skins">Creating Emulator Skins</a>
+    for more information.</td>
+ </tr>
+</table>
 
-      <td>hw.dPad</td>
-    </tr>
+<h2 id="avdproperties">AVD Properties</h2>
 
-    <tr>
-      <td>GSM modem support</td>
+<p>You can specify the following properties for AVD configurations
+in the <a href="#verifyconfigpage"><em>Verify Configuration</em></a> page.
+The AVD configuration specifies the interaction between the development
+computer and the emulator, as well as properties you want to override in the
+hardware profile.</p>
 
-      <td>Whether there is a GSM modem in the device. Default value is "yes".</td>
+<p>AVD configuration properties override hardware profile properties,
+and emulator
+properties that you set while the emulator is running override them both.</p>
 
-      <td>hw.gsmModem</td>
-    </tr>
+<table>
+ <tr>
+    <th scope="col">AVD Property</th>
+    <th scope="col">Description</th>
+ </tr>
+ <tr>
+    <td>AVD Name</td>
+    <td>Name of the AVD. The name can contain uppercase or
+    lowercase letters,
+    numbers from 0 to 9, periods (.), underscores (_), and parentheses ( () ).
+    The name of the file storing the AVD configuration is derived from the AVD
+    name.
+    </td>
+ </tr>
+ <tr>
+    <td>AVD ID (Advanced)</td>
+    <td>The AVD filename is derived from the ID, and you can use the ID to
+    refer to the AVD from the command line.</td>
+ </tr>
+ <tr>
+    <td>Hardware Profile</td>
+    <td>Click <strong>Change</strong> to select a different hardware profile in
+    the <a href="#selecthardwarepage"><em>Select Hardware</em></a> page.</td>
+ </tr>
+ <tr>
+    <td>System Image</td>
+    <td>Click <strong>Change</strong> to select a different system image in the
+    <a href="#systemimagepage"><em>System Image</em></a> page.
+    An active internet connection is required to download a new image. </td>
+ </tr>
 
-    <tr>
-      <td>Camera support</td>
+ <tr>
+    <td>Startup: Scale </td>
+    <td>Select the initial size you want to use when the emulator launches.
+    This size might be adjusted to a smaller size if it’s larger than the
+    computer screen. The default is Auto (automatic).</td>
+ </tr>
+ <tr>
+    <td>Startup: Orientation</td>
+    <td><p>Select one option for the initial emulator orientation:</p>
+<ul>
+  <li> Portrait - Oriented taller than wide.
+  <li> Landscape - Oriented wider than tall.
+</ul>
+<p>An option is enabled only if it’s selected in the hardware profile. When
+running the AVD in the emulator, you can change the orientation if portrait and
+landscape are supported in the hardware profile.</p></td>
+ </tr>
+ <tr>
+    <td>Camera (Advanced)</td>
+    <td><p>Select one or both options:</p>
+<ul>
+  <li> Front - The lens faces away from the user.
+  <li> Back - The lens faces toward the user.
+</ul>
+<p>This option is available only if it's selected in the hardware profile; it's
+not available for Android Wear and Android TV.</p></td>
+ </tr>
 
-      <td>Whether the device has a camera. Default value is "no".</td>
+ <tr>
+    <td>Network: Speed (Advanced)</td>
+    <td><p>Select a network protocol to determine the speed of data transfer:
+    </p>
+    <ul>
+    <li>GSM - Global System for Mobile Communications</li>
+<li>HSCSD - High-Speed Circuit-Switched Data</li>
+<li>GPRS - Generic Packet Radio Service</li>
+<li>EDGE - Enhanced Data rates for GSM Evolution</li>
+<li>UMTS - Universal Mobile Telecommunications System</li>
+<li>HSPDA - High-Speed Downlink Packet Access</li>
+<li>Full (default) - Transfer data as quickly as your computer allows.</li>
+</ul>
+</td>
+ </tr>
+ <tr>
+    <td>Network: Latency (Advanced)</td>
+    <td>Select a network protocol to set how much time (delay) it takes for the
+    protocol to transfer a data packet from one point to another point.</td>
+ </tr>
 
-      <td>hw.camera</td>
-    </tr>
+ <tr>
+    <td>Emulated Performance: Graphics</td>
+    <td><p>Select how graphics are rendered in the emulator:</p>
+    <ul>
+    <li>Hardware - Use your computer graphics card for faster rendering.</li>
+    <li>Software - Emulate the graphics in software, which is useful if you're
+    having a problem with rendering in your graphics card.</li>
+    <li>Auto - Let the emulator decide the best option based on your graphics
+    card.</li>
+    </td>
+ </tr>
+ <tr>
+    <td>Multi-Core CPU (Advanced)</td>
+    <td>Select the number of processor cores on your computer that you’d like
+    to use for the emulator. Using more processor cores speeds up the emulator.
+    </td>
+ </tr>
 
-    <tr>
-      <td>Maximum horizontal camera pixels</td>
+ <tr>
+    <td>Memory and Storage: RAM</td>
+    <td>The amount of RAM on the device. This value is set by the hardware
+    manufacturer, but you can override it, if needed, such as for faster
+    emulator operation. Increasing the size uses more resources on your
+    computer. Type a RAM size and select the
+    units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
+    TB (terabyte).</td>
+ </tr>
+ <tr>
+    <td>Memory and Storage: VM Heap</td>
+    <td>The VM heap size. This value is set by the hardware
+    manufacturer, but you can override it, if needed. Type a heap size and
+    select the
+    units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
+    TB (terabyte). For more information on Android VMs, see
+    <a href="{@docRoot}tools/help/am-memory.html#vm">Memory Management for
+    Different Virtual Machines</a>.</td>
+ </tr>
+ <tr>
+    <td>Memory and Storage: Internal Storage</td>
+    <td>The amount of nonremovable memory space available on the device. This
+    value is set by the hardware
+    manufacturer, but you can override it, if needed. Type a size and select the
+    units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
+    TB (terabyte).</td>
+ </tr>
+ <tr>
+    <td>Memory and Storage: SD Card</td>
+    <td>The amount of removable memory space available to store data on the
+    device. To use a virtual SD card managed by Android Studio, select
+    <strong>Studio</strong>, type a size, and select the
+    units, one of B (byte), KB (kilobyte), MB (megabyte), GB (gigabyte), or
+    TB (terabyte). A minimum of 100 MB is recommended to use the camera. To
+    manage the space in a file, select <strong>External File</strong> and
+    click <strong>...</strong> to specify the file and location. For more
+    information, see <a href="{@docRoot}tools/help/mksdcard.html">mksdcard</a>.
+    </td>
+ </tr>
 
-      <td>Default value is "640".</td>
-
-      <td>hw.camera.maxHorizontalPixels</td>
-    </tr>
-
-    <tr>
-      <td>Maximum vertical camera pixels</td>
-
-      <td>Default value is "480".</td>
-
-      <td>hw.camera.maxVerticalPixels</td>
-    </tr>
-
-    <tr>
-      <td>GPS support</td>
-
-      <td>Whether there is a GPS in the device. Default value is "yes".</td>
-
-      <td>hw.gps</td>
-    </tr>
-
-    <tr>
-      <td>Battery support</td>
-
-      <td>Whether the device can run on a battery. Default value is "yes".</td>
-
-      <td>hw.battery</td>
-    </tr>
-
-    <tr>
-      <td>Accelerometer</td>
-
-      <td>Whether there is an accelerometer in the device. Default value is "yes".</td>
-
-      <td>hw.accelerometer</td>
-    </tr>
-
-    <tr>
-      <td>Audio recording support</td>
-
-      <td>Whether the device can record audio. Default value is "yes".</td>
-
-      <td>hw.audioInput</td>
-    </tr>
-
-    <tr>
-      <td>Audio playback support</td>
-
-      <td>Whether the device can play audio. Default value is "yes".</td>
-
-      <td>hw.audioOutput</td>
-    </tr>
-
-    <tr>
-      <td>SD Card support</td>
-
-      <td>Whether the device supports insertion/removal of virtual SD Cards. Default value is
-      "yes".</td>
-
-      <td>hw.sdCard</td>
-    </tr>
-
-    <tr>
-      <td>Cache partition support</td>
-
-      <td>Whether we use a /cache partition on the device. Default value is "yes".</td>
-
-      <td>disk.cachePartition</td>
-    </tr>
-
-    <tr>
-      <td>Cache partition size</td>
-
-      <td>Default value is "66MB".</td>
-
-      <td>disk.cachePartition.size</td>
-    </tr>
-
-    <tr>
-      <td>Abstracted LCD density</td>
-
-      <td>Sets the generalized density characteristic used by the AVD's screen. Default value is
-      "160".</td>
-
-      <td>hw.lcd.density</td>
-    </tr>
-  </table>
+ <tr>
+    <td>Device Frame: Enable Device Frame</td>
+    <td>Select to enable a frame around the emulator window that mimics the
+    look of a real device.</td>
+ </tr>
+ <tr>
+    <td>Custom Skin Definition (Advanced)</td>
+    <td>Select a skin that controls what the device looks like when displayed in
+    the emulator. Remember that specifying a screen size that's too small for
+    the resolution can mean that the screen is cut off, so you can't see the
+    whole screen. See
+    <a href="{@docRoot}tools/devices/managing-avds.html#skins">Creating Emulator Skins</a>
+    for more information.</td>
+ </tr>
+ <tr>
+    <td>Keyboard: Enable Keyboard Input (Advanced)</td>
+    <td>Select this option if you want to use your hardware keyboard to interact
+    with the emulator. It's disabled for Android Wear and Android TV.</td>
+ </tr>
+</table>
 
 
 <h2 id="skins">Creating Emulator Skins</h2>
 
-<p>An Android emulator skin is a collection of files that define the visual and control elements of
-an emulator display. If the skin definitions available in the AVD settings don't meet your needs,
-you can create your own custom skin definition, then apply it to your AVD from the
-advanced settings on the Verify Configuration screen.</p>
+<p>An Android emulator skin is a collection of files that define the visual
+and control elements of
+an emulator display. If the skin definitions available in the AVD settings
+don't meet your requirements,
+you can create your own custom skin definition, and then apply it to your AVD.
+</p>
 
 <p>Each emulator skin contains:</p>
    <ul>
       <li>A <code>hardware.ini</code> file</li>
-      <li>Layout files for supported orientations (landscape, portrait) and physical configuration</li>
-      <li>Image files for display elements, such as background, keys and buttons</li>
+      <li>Layout files for supported orientations (landscape, portrait) and
+      physical configuration</li>
+      <li>Image files for display elements, such as background, keys and
+      buttons</li>
     </ul>
 <p>To create and use a custom skin:</p>
  <ol>
-    <li>Create a new directory where you will save your skin configuration files. </li>
+    <li>Create a new directory where you will save your skin configuration
+    files. </li>
     <li>Define the visual appearance of the skin in a text file named
-    <code>layout</code>. This file defines many characteristics of the skin, such as the
+    <code>layout</code>. This file defines many characteristics of the skin,
+    such as the
     size and image assets for specific buttons. For example:
 <pre class="no-prettyprint">
 parts {
@@ -322,14 +705,16 @@
 </pre></li>
 
   <li>Add the bitmap files of the device images in the same directory.</li>
-  <li>Specify additional hardware-specific device configurations an <code>hardware.ini</code>
+  <li>Specify additional hardware-specific device configurations in a
+  <code>hardware.ini</code>
   file for the device settings, such as <code>hw.keyboard</code> and
   <code>hw.lcd.density</code>.</li>
-  <li>Archive the files in the skin folder and select the archive file as a custom skin. </li>
+  <li>Archive the files in the skin folder and select the archive file as a
+  custom skin.</li>
 </ol>
 
 <p>For more detailed information about creating emulator skins, see the
-<a href="https://android.googlesource.com/platform/external/qemu.git/+/master/docs/ANDROID-SKIN-FILES.TXT"
+<a href="https://android.googlesource.com/platform/external/qemu/+/emu-master-dev/docs/ANDROID-SKIN-FILES.TXT"
 >Android Emulator Skin File Specification</a> in the tools source code.</p>
 
 
diff --git a/docs/html/tools/help/app-link-indexing.jd b/docs/html/tools/help/app-link-indexing.jd
index 611373a..5b76059 100644
--- a/docs/html/tools/help/app-link-indexing.jd
+++ b/docs/html/tools/help/app-link-indexing.jd
@@ -1,4 +1,4 @@
-page.title=Deep Link and App Indexing API Support in Android Studio
+page.title=Supporting URLs and App Indexing in Android Studio
 parent.title=Tools
 parent.link=index.html
 page.tags=app indexing
@@ -9,11 +9,13 @@
   <h2>In this document</h2>
 <ol>
   <li><a href="#workflow">Typical Workflow</a></li>
-  <li><a href="#intent">Adding an Intent Filter for Deep Linking and Google Search</a></li>
+  <li><a href="#intent">Adding an Intent Filter for URL Support and Google Search</a></li>
   <li><a href="#indexing">Adding App Indexing API Skeleton Code to an Activity</a></li>
-  <li><a href="#testintent">Testing a Deep Link</a></li>
+  <li><a href="#testintent">Testing a URL</a></li>
   <li><a href="#testindexing">Viewing App Indexing API Messages in the logcat Monitor</a></li>
   <li><a href="#lint">Configuring Lint</a></li>
+  <li><a href="#appindexingtest">Performing a Google App Indexing Test</a></li>
+
 </ol>
 
  <h2>See also</h2>
@@ -48,15 +50,16 @@
 </div>
 </div>
 
-<p>Android Studio helps you add deep links, app indexing, and search functionality to your apps.
+<p>Android Studio helps you add support for URLs, app indexing, and search
+functionality to your apps.
   These features can help to drive more traffic to your
   app, discover which app content is used most, make it easier for users to find content in an
   installed app, and attract new users.</p>
 
 <h2 id="workflow">Typical Workflow</h2>
 
-<p>To use Android Studio to add deep link, app indexing, and search features to your app, follow
-  these basic steps:</p>
+<p>To use Android Studio to add support for URL, app indexing, and search
+features to your app:</p>
 
 <ol>
 <li>Add intent filters and code to handle incoming intents.</li>
@@ -64,23 +67,25 @@
 <li>Add App Indexing API code.</li>
 </ol>
 
-<p>Intent filters and the App Indexing API are ways to implement deep links and app indexing, but
+<p>Intent filters and the App Indexing API are ways to implement URL support
+and app indexing, but
   there are other possible implementations as well. See
   <a href="https://developers.google.com/app-indexing/reference/deeplinks"
   class="external-link">Alternate Android Indexing Methods</a>
   for more information.</p>
 
-<h3 id="aboutintent">Intent filters for deep links</h3>
+<h3 id="aboutintent">Intent filters for URLs</h3>
 
 <p>Android Studio can create a basic intent filter in your manifest that you can customize to
-  define deep link URLs for your app. You can then write Java code in an activity to handle the
+  define URLs for your app. You can then write Java code in an activity to handle the
   intent. This implementation lets users directly open the specified app activity by
-  clicking a deep link. Users can see the deep links in google.com in a browser, in the
+  clicking a URL. Users can see the URLs in google.com in a browser, in the
   Google Search app, and in Google Now on Tap. </p>
 
-<h3 id="aboutassociation">Website association with deep links</h3>
+<h3 id="aboutassociation">Website association with URLs</h3>
 
-<p>After setting up deep links for your app, you can associate your website with your app by using
+<p>After setting up URL support for your app, you can associate your website
+with your app by using
   the Google Search Console and Google Play Developer Console. Afterward, Google indexes your app
   for URLs defined in
   your intent filters and begins to include them in search results. In addition, you can optionally
@@ -91,11 +96,11 @@
 <p>As an alternative to associating your app with a website,
   for Android 6.0 (API level 23) and higher, you can add
   <a href="{@docRoot}training/app-links/index.html"
-  >default handlers and verification for deep links</a>
+  >default handlers and verification for URLs</a>
   instead.</p>
 
-<p>Chrome displaying google.com serves search results with deep links that are accessible to both
-  signed-in users and those who aren't. Google Search app users must be signed in to see deep links
+<p>Chrome displaying google.com serves search results with URLs that are accessible to both
+  signed-in users and those who aren't. Google Search app users must be signed in to see URLs
   in their search results. </p>
 
 <h3 id="aboutapi">App Indexing API code in activities</h3>
@@ -108,24 +113,27 @@
   class="external-link">Googlebot</a>
   can’t get content from your app.</p>
 
-<h3 id="abouttest">Deep link and App Indexing API testing</h3>
+<h3 id="abouttest">URL support and App Indexing API testing</h3>
 
 <p>Android Studio helps you test your code with the following features:</p>
 
 <ul>
-<li>Deep link testing helps you verify that a specified deep link can launch an app. </li>
+<li>URL support testing helps you verify that a specified URL can launch an app.
+</li>
 <li>The logcat Monitor helps you test App Indexing API calls in an activity. </li>
-<li>The Android Lint tool has warnings for certain issues involving deep links and the App Indexing
+<li>The Android Lint tool has warnings for certain issues involving URL support
+and the App Indexing
   API. These warnings and errors appear in the Code Editor and in Lint inspection results.</li>
+  <li>A Google App Indexing test checks whether Google can index a URL by
+  either crawling your app page or using the App Indexing API.</li>
 </ul>
 
-<p>The details for implementing deep links and app indexing are described next.
+<p>The details for implementing URL support and app indexing are described next.
 
 
-<h2 id="intent">Adding an Intent Filter for Deep Linking and Google Search</h2>
+<h2 id="intent">Adding an Intent Filter for URL Support and Google Search</h2>
 
-<p>To use Android Studio features to add an intent filter defining a deep link, follow these
-  steps:</p>
+<p>To use Android Studio features to add an intent filter defining a URL:</p>
 
 <ol>
 <li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
@@ -138,11 +146,11 @@
     style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" /> appears. Click
   <img src="{@docRoot}images/tools/ai-ilightbulb.png"
   style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" />
-  and select <strong>Create Deep Link</strong>.</li>
+  and select <strong>Create URL</strong>.</li>
 <li>Right-click in an <code>&lt;activity&gt;</code> element and select <strong>Generate</strong>
-  &gt; <strong>Deep Link</strong>.</li>
+  &gt; <strong>URL</strong>.</li>
 <li>Place your cursor in an activity, and then select <strong>Code</strong> &gt;
-  <strong>Generate</strong> &gt; <strong>Deep Link</strong>.</li>
+  <strong>Generate</strong> &gt; <strong>URL</strong>.</li>
 </ul>
 
 <p>The Code Editor adds skeleton code using the
@@ -154,7 +162,7 @@
 <p>The Code Editor adds an intent filter similar to the following:</p>
 <pre>
 &lt;!-- ATTENTION: This intent was auto-generated. Follow instructions at
- https://g.co/AppIndexing/AndroidStudio to publish your Android app deep links. --&gt;
+ https://g.co/AppIndexing/AndroidStudio to publish your URLs. --&gt;
 &lt;intent-filter&gt;
    &lt;action android:name="android.intent.action.VIEW" /&gt;
 
@@ -177,19 +185,20 @@
 
 <p>We recommend that you define a <code>&lt;data&gt;</code> element that supports URLs that you’ll
   add in the future. In the previous sample code, for example, Google will index any URLs starting
-  with <code>www.example.com/gizmos</code>. Also, remember to
-  include a deep link for your app home screen so it’s included in search results. </p>
+  with <code>http://www.example.com/gizmos</code>. Also, remember to
+  include a URL for your app home screen so it’s included in search results. </p>
 
-<p>Deep link URLs can be the same as the URLs of the comparable pages on your website.</p>
+<p>The URLs you specify in your intent filters can be the same as the URLs of
+the comparable pages on your website.</p>
 
 <li>In the corresponding activity,
   <a href="{@docRoot}training/app-indexing/deep-linking.html#handling-intents">add Java code</a>
   to read data from the intent filter and direct the app to respond accordingly. </li>
-<li><a href="#testintent">Test your deep link</a>.</li>
+<li><a href="#testintent">Test your URL</a>.</li>
 
 </ol>
 
-<p>To support Google Search for your deep links, follow these steps:</p>
+<p>To support Google Search for your URLs:</p>
 <ol>
 <li><a href="https://developers.google.com/app-indexing/android/app#declare-a-website-association"
   class="external-link">Define an association</a>
@@ -198,7 +207,7 @@
   <a href="{@docRoot}training/app-links/index.html">link default handling and verification</a>.</p>
 <li>Optionally
   <a href="https://developers.google.com/app-indexing/android/app#create-the-noindexxml-file"
-  class="external-link">exclude app URLs</a>
+  class="external-link">exclude certain URLs</a>
   from the Google index.</li>
 <li>Optionally <a href="#indexing">add App Indexing API code</a> to support additional search
   features.</li>
@@ -207,27 +216,28 @@
 
 <p>To test and debug your links, you can use the following Android Studio features:</p>
 <ul>
-<li><a href="#testintent">Launch your deep link</a> in Android Studio to test that it works.</li>
+<li><a href="#testintent">Launch your URL</a> in Android Studio to test that it works.</li>
 <li><a href="#lint">Enable the following Android Lint categories</a>:</li>
 <ul>
-<li><strong>Missing Support for Google App Indexing</strong></li>
-<li><strong>Incorrect Usage of App Link for Google App Indexing</strong></li>
+<li><strong>Missing support for Google App Indexing</strong></li>
+<li><strong>URL not supported by app for Google App Indexing</strong></li>
 </ul>
+<li><a href="#appindexingtest">Perform a Google App Indexing Test</a>.</li>
 </ul>
 
 <p>In addition, you can
   <a href="https://developers.google.com/app-indexing/android/test#preview-your-apk-on-search-console"
   class="external-link">preview your APK in the Google Search Console</a>
-  to test your deep links, whether the app is associated with a website or not. </p>
+  to test your URLs, whether the app is associated with a website or not. </p>
 
 
 
 <h2 id="indexing">Adding App Indexing API Skeleton Code to an Activity</h2>
 
-<p>After adding deep links, you can add App Indexing API code to an activity to support additional
-  search features.  </p>
+<p>After adding URL support to your app, you can add App Indexing API code to
+an activity to support additional search features.  </p>
 
-<p>To add App Indexing API code to an activity, follow these steps:</p>
+<p>To add App Indexing API code to an activity:</p>
 <ol>
 <li>In <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
   in the <em>Project</em> window, double-click the activity Java file to open it in the
@@ -297,9 +307,9 @@
                // this app activity's content,
                // make sure this auto-generated web page URL is correct.
                // Otherwise, set the URL to null.
-               Uri.parse("http://host/path"),
-               // TODO: Make sure this auto-generated app deep link URI is correct.
-               Uri.parse("android-app://com.example/http/host/path")
+               Uri.parse("http://www.example.com/gizmos"),
+               // TODO: Make sure this auto-generated app URL is correct.
+               Uri.parse("android-app://com.example/http/www.example.com/gizmos")
        );
        AppIndex.AppIndexApi.start(client, viewAction);
    }
@@ -317,9 +327,9 @@
                // this app activity's content,
                // make sure this auto-generated web page URL is correct.
                // Otherwise, set the URL to null.
-               Uri.parse("http://host/path"),
-               // TODO: Make sure this auto-generated app deep link URI is correct.
-               Uri.parse("android-app://com.example/http/host/path")
+               Uri.parse("http://www.example.com/gizmos"),
+               // TODO: Make sure this auto-generated app URL is correct.
+               Uri.parse("android-app://com.example/http/www.example.com/gizmos")
        );
        AppIndex.AppIndexApi.end(client, viewAction);
        client.disconnect();
@@ -363,7 +373,9 @@
 <ul>
 <li><a href="#testindexing">Examine logcat Monitor Messages</a>.</li>
 <li><a href="#lint">Enable the following Android Lint category</a>:
-  <strong>Missing Support for Google App Indexing API</strong></li>
+  <strong>Missing support for Google App Indexing API</strong></li>
+
+<li><a href="#appindexingtest">Perform a Google App Indexing Test</a>.</li>
 </ul>
 
 <p>In addition, you can
@@ -371,12 +383,12 @@
   class="external-link">preview your APK in the Google Search Console</a>.</p>
 
 
-<h2 id="testintent">Testing a Deep Link</h2>
+<h2 id="testintent">Testing a URL</h2>
 
-<p>When you run your app from Android Studio, you can specify a deep link to launch so you can
+<p>When you run your app from Android Studio, you can specify a URL to launch so you can
   test it.</p>
 
-<p>To launch a deep link from Android Studio, follow these steps:</p>
+<p>To launch a URL from Android Studio:</p>
 <ol>
 <li>In Android Studio, open your project in
   <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
@@ -385,14 +397,14 @@
 <li>In the <em>Run/Debug Configurations</em> dialog, beneath <strong>Android Application,</strong>
   select the module you want to test.</li>
 <li>Select the <strong>General</strong> tab. </li>
-<li>In the <strong>Launch</strong> field, select <strong>Deep Link</strong>. </li>
-<li>In the <strong>Deep Link</strong> field, click <strong>…</strong> to select from a list of
-  defined deep links.</li>
+<li>In the <strong>Launch</strong> field, select <strong>URL</strong>. </li>
+<li>In the <strong>URL</strong> field, click <strong>…</strong> to select from a list of
+  defined URLs.</li>
 
 <p>Or type the URL you want to test, for example, <code>http://example.com/gizmos</code>. </p>
 <li>Click <strong>OK</strong>.</li>
 <li>Select <strong>Run</strong> &gt; <strong>Run app</strong> or <strong>Debug app</strong>.</li>
-<li>If the <em>Device Chooser</em> dialog appears, select a connected device or an
+<li>If the <em>Select Deployment Target</em> dialog appears, select a connected device or an
   emulator, and click <strong>OK</strong>.</li>
 
 <p>If the link is successful, the app launches in the device or emulator, and displays the app at
@@ -411,12 +423,12 @@
 
 <p>The logcat Monitor can display app indexing log messages to determine if your App Indexing API
   code is pushing the correct data to the cloud. For example, you can check the app title and the
-  URL. The logcat Monitor is part of Android Monitor in Android Studio. </p>
+  URL. The logcat Monitor is part of Android Monitor in Android Studio.</p>
 
-<p>Follow these steps:</p>
+<p>To view App Indexing API messages in the logcat Monitor:</p>
 <ol>
-<li>Run your app in Android Studio so it <a href="#testintent">launches a deep link</a>.</li>
-<li><a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>
+<li>Run your app in Android Studio so it <a href="#testintent">launches a URL</a>.</li>
+<li><a href="{@docRoot}tools/help/am-logcat.html#running">Display Android Monitor</a>
   and click the <strong>logcat</strong> tab.</li>
 <li><a href="{@docRoot}tools/help/am-logcat.html#level">Set the log level</a> to
   <strong>Verbose</strong>.</li>
@@ -445,10 +457,10 @@
 
 <h2 id="lint">Configuring Lint</h2>
 
-<p>You can use the Android Studio built-in Lint tool to check whether you have valid deep links
+<p>You can use the Android Studio built-in Lint tool to check whether you have valid URLs
   defined in the manifest and have implemented the App Indexing API correctly in activities.</p>
 
-<p>You can view deep link and app indexing warnings and errors in two ways: </p>
+<p>You can view URL and app indexing warnings and errors in two ways: </p>
 <ul>
 <li>As pop-up text in the Code Editor. When Lint finds a problem, it highlights the problematic
   code in yellow, or underlines the code in red for more serious issues.</li>
@@ -458,7 +470,7 @@
 
 
 
-<p>To set default Lint checks for deep links and the App Indexing API, follow these steps:</p>
+<p>To set default Lint checks for URLs and the App Indexing API:</p>
 <ol>
 <li>In Android Studio, open your project in
   <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.
@@ -472,25 +484,24 @@
   respectively. </li>
 <li>Expand the <strong>Android Lint</strong> category and change the Lint settings as needed:</li>
 <ul>
-<li><strong>Missing Support for Google App Indexing</strong> - Reports a warning if the app hasn’t
-  implemented deep links, which are used by Google Search. This warning setting is enabled by
+<li><strong>Missing support for Google App Indexing</strong> - Reports a warning if the app hasn’t
+  implemented URLs, which are used by Google Search. This warning setting is enabled by
   default.</li>
-<li><strong>Missing Support for Google App Indexing API</strong> - Reports if an app hasn’t
+<li><strong>Missing support for Google App Indexing API</strong> - Reports if an app hasn’t
   implemented the App Indexing API at all. This warning setting is disabled by default.</li>
-<li><strong>Incorrect Usage of App Link for Google App Indexing</strong> - Reports deep link
+<li><strong>URL not supported by app for Google App Indexing</strong> - Reports URL
   errors in manifest code. This error setting is enabled by default.</li>
 </ul>
 
 <p>For example, the following Lint warning appears for the first setting:</p>
-<p><img src="{@docRoot}images/tools/ai-lint.png" /></p>
+<p><img src="{@docRoot}images/tools/ai-lint.png" alt="Lint warning" /></p>
 
 <li>Click <strong>OK</strong>.</li>
 </ol>
 
 
 
-<p>To produce a list of Lint checks displayed in the <em>Inspection Results</em> window,
-  follow these steps:</p>
+<p>To produce a list of Lint checks displayed in the <em>Inspection Results</em> window:</p>
 <ol>
 <li>In Android Studio, open your project in
   <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
@@ -504,7 +515,7 @@
   dialog, optionally click <strong>Manage</strong> to define a new profile, specify the Lint
   settings you want, and then click <strong>OK</strong>.</li>
 <p>In the <em>Inspections</em>  dialog, you can search for the string "app indexing"
-to find the deep link and App Indexing API Lint checks. Note that changing Lint settings for a
+to find the URL and App Indexing API Lint checks. Note that changing Lint settings for a
 profile in the <em>Inspections</em> dialog doesn’t change the default settings, as described in
 the previous procedure. It does change the settings for profiles displayed in the
 <em>Inspections</em> dialog, however.</p>
@@ -512,3 +523,87 @@
 <p>The results appear in the <em>Inspection Results</em> window.</p>
 
 </ol>
+
+
+<h2 id="appindexingtest">Performing a Google App Indexing Test</h2>
+
+<p>You can use a Google App Indexing Test to check whether Google can index
+a URL by either crawling your app page or using the App Indexing API.
+Google can index the URL if your app supports at least one of the following:
+</p>
+<ul>
+<li>Googlebot can open and crawl the page identified by the URL.</li>
+<li>Your app sends the correct data by using the App Indexing API.</li>
+</ul>
+
+<p>To perform a Google App Indexing Test: </p>
+<ol>
+<li>Add <a href="#intent">URL</a> and
+<a href="#indexing">App Indexing API</a> support to your app.
+</li>
+<li>While your project is open in Android Studio, select <strong>Tools</strong>
+&gt; <strong>Android</strong> &gt; <strong>Google App Indexing Test</strong>.
+</li>
+<li>In the <em>Google App Indexing Test</em> dialog, select a
+<strong>Module</strong>, <strong>URL</strong>, and <strong>Language</strong>.
+</li>
+<li>Log in if you see a message asking you to log into a Google Cloud Platform
+account.</li>
+<li>In the <em>Google App Indexing Test</em> dialog, click <strong>OK</strong>.
+</li>
+
+<p>Android Studio builds the APK and starts the test. The test can take a few
+minutes to complete. The results appear in a new tab in the Code Editor.</p>
+<p><img src="{@docRoot}images/tools/ai-appindexingtest.png"
+alt="Google App Indexing Test results" /></p>
+
+<p>If the app preview on the right shows the screen that corresponds to the URL
+you're testing, then Googlebot can find the URL.</p>
+
+<li>Correct any issues the test identifies, and repeat the test as often as
+needed.</li>
+</li>
+</ol>
+
+<p>The following table lists common errors and warnings you might encounter.</p>
+
+<table>
+  <tr>
+    <th scope="col">Warning or Error</th>
+    <th scope="col">Description</th>
+  </tr>
+
+  <tr>
+    <td>Error: Google cannot index this page.</td>
+    <td>Your app can't be crawled by Googlebot or using the App Indexing API,
+     so Google isn't able to index this app.</td>
+  </tr>
+  <tr>
+    <td>Warning: The App URL you sent by using the App Indexing API doesn't
+    match the URL opened.</td>
+    <td>When calling the App Indexing API, the URL specified in the app must
+    match the opened URL.</td>
+  </tr>
+  <tr>
+    <td>Warning: Google cannot index this page using the App Indexing API
+    because the title is empty.</td>
+    <td>When calling the App Indexing API, the title shouldn't be empty.</td>
+  </tr>
+  <tr>
+    <td>Warning: Google can index this page using Googlebot crawling but
+    identified blocked resources.</td>
+    <td>The app references other resources, and some of them are blocked or
+    temporarily unavailable. If these resources aren't critical, it might not
+    matter. Check the preview on the right to see whether the content
+    displays correctly. To fix this issue, make sure the resources aren't
+    blocked by <a href="https://support.google.com/webmasters/answer/6062608"
+  class="external-link"><code>robots.txt</code></a>.</td>
+  </tr>
+  <tr>
+    <td>Warning: Google cannot index this page using the App Indexing API.</td>
+    <td>Your app isn’t using the App Indexing API. We recommended adding App
+    Indexing API support to your app.</td>
+  </tr>
+
+</table>
+
diff --git a/docs/html/tools/help/emulator.jd b/docs/html/tools/help/emulator.jd
index fa101e1..08e3f6f 100644
--- a/docs/html/tools/help/emulator.jd
+++ b/docs/html/tools/help/emulator.jd
@@ -1,6 +1,4 @@
-page.title=Android Emulator
-parent.title=Tools
-parent.link=index.html
+page.title=Using Android Emulator Command-Line Features
 @jd:body
 
 <div id="qv-wrapper">
@@ -8,14 +6,63 @@
 
   <h2>In this document</h2>
   <ol>
-    <li><a href="#KeyMapping">Keyboard Commands</a></li>
-    <li><a href="#startup-options">Command Line Parameters</a></li>
+      <li><a href="#starting">Starting and Stopping the Emulator</a></li>
+      <li><a href="#apps">Installing Applications on the Emulator</a></li>
+      <li><a href="#startup-options">Using Command Line Parameters</a></li>
+      <li><a href="#acceleration">Using Hardware Acceleration</a>
+        <ol>
+          <li><a href="#accel-graphics">Configuring Graphics Acceleration</a></li>
+          <li><a href="#accel-vm">Configuring Virtual Machine Acceleration</a></li>
+        </ol>
+      </li>
+      <li><a href="#sdcard">Using SD Card Emulation</a>
+        <ol>
+          <li><a href="#sdcard-creating">Creating an SD card image</a></li>
+          <li><a href="#sdcard-files">Copying files to an SD card image</a></li>
+          <li><a href="#sdcard-loading">Loading an SD card image</a></li>
+        </ol>
+      </li>
+      <li><a href="#diskimages">Working With Emulator Disk Images</a>
+        <ol>
+          <li><a href="#defaultimages">Default image files</a></li>
+          <li><a href="#runtimeimages">Runtime images: user data and SD card</a></li>
+          <li><a href="#temporaryimages">Temporary images</a></li>
+        </ol>
+      </li>
+      <li><a href="#emulatornetworking">Setting Up Emulator Networking</a>
+        <ol>
+          <li><a href="#networkaddresses">Network Address Space</a></li>
+          <li><a href="#networkinglimitations">Local Networking Limitations</a></li>
+          <li><a href="#redirection">Using Network Redirection</a></li>
+          <li><a href="#dns">Configuring the Emulator's DNS Settings</a></li>
+          <li><a href="#proxy">Using the Emulator with a Proxy</a></li>
+          <li><a href="#connecting">Interconnecting Emulator Instances</a></li>
+          <li><a href="#calling">Sending a Voice Call or SMS to Another Emulator Instance</a></li>
+        </ol>
+      </li>
+      <li><a href="#console">Using the Emulator Console</a>
+        <ol>
+          <li><a href="#portredirection">Port Redirection</a></li>
+          <li><a href="#geo">Geo Location Provider Emulation</a></li>
+          <li><a href="#events">Hardware Events Emulation</a></li>
+          <li><a href="#power">Device Power Characteristics</a></li>
+          <li><a href="#netstatus">Network Status</a></li>
+          <li><a href="#netdelay">Network Delay Emulation</a></li>
+          <li><a href="#netspeed">Network Speed Emulation</a></li>
+          <li><a href="#telephony">Telephony Emulation</a></li>
+          <li><a href="#sms">SMS Emulation</a></li>
+          <li><a href="#vm">VM State</a></li>
+          <li><a href="#window">Emulator Window</a></li>
+          <li><a href="#terminating">Terminating an Emulator Instance</a></li>
+        </ol>
+      </li>
+      <li><a href="#troubleshooting">Troubleshooting Emulator Problems</a></li>
   </ol>
 
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}tools/devices/emulator.html">Using the Android Emulator</a></li>
-    <li><a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a></li>
+    <li><a href="{@docRoot}tools/devices/emulator.html">Running Apps in the Android Emulator</a></li>
+    <li><a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with the AVD Manager</a></li>
   </ol>
 
 </div>
@@ -26,111 +73,81 @@
 that runs on your computer. The emulator lets you develop and test
 Android applications without using a physical device.</p>
 
-<p>This document is a reference to the available command line options and the keyboard mapping to
-device keys.
-For a complete guide to using the Android Emulator, see
+<p>This page describes command line features that you can use with the
+Android Emulator.
+For information about using the Android Emulator UI, see
 <a href="{@docRoot}tools/devices/emulator.html">Using the Android Emulator</a>.
+</p>
 
 
-<h2 id="KeyMapping">Keyboard Commands</h2>
+<h2 id="starting">Starting and Stopping the Emulator</h2>
 
-<p>Table 1 summarizes the mappings between the emulator keys and the keys of your keyboard.</p>
+<p>During development and testing of your application, you install and run your
+application in the Android Emulator. You can launch the emulator as a standalone
+application from a command line, or you can run it from within your Android Studio
+development environment. In either case, you specify the AVD configuration to
+load and any startup options you want to use, as described in this document.
+</p>
 
-<p class="table-caption"><strong>Table 1.</strong> Emulator keyboard mapping</p>
-<table  border="0" style="clear:left;">
-  <tr>
-    <th>Emulated Device Key </th>
-    <th>Keyboard Key </th>
-  </tr>
-  <tr>
-    <td>Home</td>
-    <td>HOME</td>
-  </tr>
-  <tr>
-    <td>Menu (left softkey)</td>
-    <td>F2 <em>or</em> Page-up button</td>
-  </tr>
-  <tr>
-    <td>Star (right softkey)</td>
-    <td>Shift-F2 <em>or </em>Page Down</td>
-  </tr>
-  <tr>
-    <td>Back</td>
-    <td>ESC</td>
-  </tr>
-  <tr>
-    <td>Call/dial button </td>
-    <td>F3</td>
-  </tr>
-  <tr>
-    <td>Hangup/end call button</td>
-    <td>F4</td>
-  </tr>
-  <tr>
-    <td>Search</td>
-    <td>F5 </td>
-  </tr>
-  <tr>
-    <td>Power button</td>
-    <td>F7 </td>
-  </tr>
-  <tr>
-    <td>Audio volume up button</td>
-    <td>KEYPAD_PLUS, Ctrl-F5</td>
-  </tr>
+<p>You can run your application on a single instance of the emulator or,
+depending on your needs, you can start multiple emulator instances and run your
+application in more than one emulated device. You can use the emulator's
+built-in commands to simulate GSM phone calling or SMS between emulator
+instances, and you can set up network redirection that allows emulators to send
+data to one another. For more information, see <a href="#telephony">Telephony
+Emulation</a>, <a href="#sms">SMS Emulation</a>, and
+<a href="#emulatornetworking">Emulator Networking</a></p>
 
-  <tr>
-    <td>Audio volume down button</td>
-    <td>KEYPAD_MINUS, Ctrl-F6</td>
-  </tr>
-  <tr>
-    <td>Camera button</td>
-    <td>Ctrl-KEYPAD_5, Ctrl-F3</td>
-  </tr>
-  <tr>
-    <td>Switch to previous layout orientation (for example, portrait, landscape)</td>
-    <td>KEYPAD_7, Ctrl-F11</td>
-  </tr>
-  <tr>
-    <td>Switch to next layout orientation (for example, portrait, landscape)</td>
-    <td>KEYPAD_9, Ctrl-F12</td>
-  </tr>
-  <tr>
-    <td>Toggle cell networking on/off</td>
-    <td>F8</td>
-  </tr>
-  <tr>
-    <td>Toggle code profiling</td>
-    <td>F9 (only with <code>-trace</code> startup option)</td>
-  </tr>
-  <tr>
-    <td>Toggle fullscreen mode</td>
-    <td>Alt-Enter</td>
-  </tr>
-  <tr>
-    <td>Toggle trackball mode</td>
-    <td>F6</td>
-  </tr>
-  <tr>
-    <td>Enter trackball mode temporarily (while key is pressed)</td>
-    <td>Delete</td>
-  </tr>
-  <tr>
-    <td>DPad left/up/right/down</td>
-    <td>KEYPAD_4/8/6/2</td>
-  </tr>
-  <tr>
-    <td>DPad center click</td>
-    <td>KEYPAD_5</td>
-  </tr>
-  <tr>
-    <td>Onion alpha increase/decrease</td>
-    <td>KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)</td>
-  </tr>
-</table>
+<p>To start an instance of the emulator from the command line, navigate to the
+<code>tools/</code> folder of the SDK. Enter <code>emulator</code> command
+like this: </p>
+
+<pre>emulator -avd &lt;avd_name&gt; [&lt;options&gt;]</pre>
+
+<p>This initializes the emulator, loads an AVD configuration and displays the emulator
+window. For more information about command line options for the emulator, see the
+<a href="{@docRoot}tools/help/emulator.html">Android Emulator</a> tool reference.</p>
+
+<p class="note"><strong>Note:</strong> You can run multiple
+instances of the emulator concurrently, each with its own AVD configuration and
+storage area for user data, SD card, and so on.</p>
+
+<p>When you run your app from Android Studio, it installs and launches the
+app on your connected device or emulator (launching the emulator, if necessary).
+You can specify emulator startup options in the Run/Debug
+dialog, in the Target tab. When the emulator is running, you can issue
+console commands as described later in this document.</p>
+
+<p>If you are not working in Android Studio, see <a href="#apps">Installing Applications
+on the Emulator</a> for information about how to install your application.</p>
+
+<p>To stop an emulator instance, just close the emulator's window.</p>
+
+<p>For a reference of the emulator's startup commands and keyboard mapping, see
+the <a href="{@docRoot}tools/help/emulator.html">Android Emulator</a> tool
+reference.</p>
 
 
-<h2 id="startup-options">Command Line Parameters</h2>
+<h2 id="apps">Installing Applications on the Emulator</h2>
+
+<p>If you don't have access to Android Studio, you can install your application on the
+emulator using the <a href="{@docRoot}tools/help/adb.html#move">adb</a> utility. Before
+installing the application, you need to build and package it into an <code>.apk</code> as described
+in <a href="{@docRoot}tools/building/index.html">Building and
+Running Apps</a>. Once the application is installed, you can start the emulator from the command
+line as described previously, using any startup options necessary.
+When the emulator is running, you can also connect to the emulator instance's
+<a href="#console">console</a> to issue commands as needed.</p>
+
+<p>As you update your code, you periodically package and install it on the emulator.
+The emulator preserves the application and its state data across restarts,
+in a user-data disk partition. To ensure that the application runs properly
+as you update it, you may need to delete the emulator's user-data partition.
+To do so, start the emulator with the <code>-wipe-data</code> option.
+For more information about the user-data partition and other emulator storage,
+see <a href="#diskimages">Working with Emulator Disk Images</a>.</p>
+
+<h2 id="startup-options">Using Command Line Parameters</h2>
 
 <p>The emulator supports a variety of options that you can specify
 when launching the emulator, to control its appearance or behavior.
@@ -579,3 +596,1339 @@
   <td>&nbsp;</td>
 </tr>
 </table>
+
+
+<h2 id="acceleration">Using Hardware Acceleration</h2>
+
+<p>To make the Android emulator run faster and be more responsive, you can configure it to
+take advantage of hardware acceleration, using a combination of configuration options, specific
+Android system images and hardware drivers.</p>
+
+
+<h3 id="accel-graphics">Configuring Graphics Acceleration</h3>
+
+<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the graphics
+acceleration feature for the emulator is experimental; be alert for incompatibilities and
+errors when using this feature. </p>
+
+<p>Graphics acceleration for the emulator takes advantage of your development computer's graphics
+hardware, specifically its graphics processing unit (GPU), to make screen drawing faster. To use
+the graphics acceleration feature, you must have the following versions of the Android development
+tools installed:</p>
+
+<ul>
+  <li>Android SDK Tools, Revision 17 or higher</li>
+  <li>Android SDK Platform API 15, Revision 3 or higher</li>
+</ul>
+
+<p>Use the <a href="{@docRoot}sdk/installing/index.html#AddingComponents">Android SDK
+Manager</a> to install these components:</p>
+
+<p class="note"><strong>Note:</strong> Not all applications are compatible with graphics hardware
+acceleration. In particular, the Browser application and applications using the {@link
+android.webkit.WebView} component are not compatible with graphics acceleration.</p>
+
+<p>To configure an AVD to use graphics acceleration:</p>
+
+<ol>
+  <li>Make sure you have the required SDK components installed (listed above).</li>
+  <li>Start the AVD Manager and create a new AVD with the <strong>Target</strong> value of
+<strong>Android 4.0.3 (API Level 15)</strong>, revision 3 or higher.</li>
+  <li>If you want to have graphics acceleration enabled by default for this AVD, in the
+<strong>Hardware</strong> section, click <strong>New</strong>, select <strong>GPU emulation</strong>
+and set the value to <strong>Yes</strong>.
+  <p class="note"><strong>Note:</strong> You can also enable graphics acceleration when you
+start an emulator using command line options as describe in the next section.</p>
+  </li>
+  <li>Name the AVD instance and select any other configuration options.
+  <p class="caution"><strong>Caution:</strong> Do not select the <strong>Snapshot: Enabled</strong>
+option. Snapshots are not supported for emulators with graphics acceleration enabled.</p>
+  </li>
+  <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
+</ol>
+
+<p>If you set <strong>GPU emulation</strong> to <strong>Yes</strong> for your AVD, then graphics
+acceleration is automatically enabled when you run it. If you did not enable <strong>GPU
+emulation</strong> when you created the AVD, you can still enable it at runtime.</p>
+
+<p>To enable graphics acceleration at runtime for an AVD:</p>
+
+<ul>
+  <li>If you are running the emulator from the command line, just include the {@code -gpu on}
+option:
+<pre>emulator -avd &lt;avd_name&gt; -gpu on</pre>
+    <p class="note"><strong>Note:</strong> You must specify an AVD configuration that uses
+Android 4.0.3 (API Level 15, revision 3) or higher system image target. Graphics acceleration is not
+available for earlier system images.</p>
+  </li>
+  <li>If you are running the emulator from Android Studio, run your Android application using an AVD
+with the {@code -gpu on} option enabled:
+    <ol>
+      <li>In Android Studio, click your Android application module folder and then select
+      <strong>Run > Edit Configurations...</strong></li>
+      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
+      run configuration or create a new configuration.</li>
+      <li>Under the <strong>Target Device </strong> options,
+      select the AVD you created in the previous procedure.</li>
+      <li>In the <strong>Emulator</strong> tab, in the
+      <strong>Additional command line options</strong> field, enter:<br>
+        {@code -gpu on}</li>
+      <li>Run your Android project using this run configuration.</li>
+    </ol>
+  </li>
+</ul>
+
+
+<h3 id="accel-vm">Configuring Virtual Machine Acceleration</h2>
+
+<p class="caution"><strong>Caution:</strong> As of SDK Tools Revision 17, the virtual machine
+acceleration feature for the emulator is experimental; be alert for incompatibilities and errors
+when using this feature.</p>
+
+<p>Many modern CPUs provide extensions for running virtual machines (VMs) more efficiently. Taking
+advantage of these extensions with the Android emulator requires some additional configuration of
+your development system, but can significantly improve the execution speed. Before attempting to use
+this type of acceleration, you should first determine if your development system’s CPU supports one
+of the following virtualization extensions technologies:</p>
+
+<ul>
+  <li>Intel Virtualization Technology (VT, VT-x, vmx) extensions</li>
+  <li>AMD Virtualization (AMD-V, SVM) extensions (only supported for Linux)</li>
+</ul>
+
+<p>The specifications from the manufacturer of your CPU should indicate if it supports
+virtualization extensions. If your CPU does not support one of these virtualization technologies,
+then you cannot use virtual machine acceleration.</p>
+
+<p class="note"><strong>Note:</strong> Virtualization extensions are typically enabled through
+your computer's BIOS and are frequently turned off by default. Check the documentation for your
+system's motherboard to find out how to enable virtualization extensions.</p>
+
+<p>Once you have determined that your CPU supports virtualization extensions, make sure you can work
+within these additional requirements of running an emulator inside an accelerated virtual
+machine:</p>
+
+<ul>
+  <li><strong>x86 AVD Only</strong> - You must use an AVD that is uses an x86 system image target.
+AVDs that use ARM-based system images cannot be accelerated using the emulator configurations
+described here.</li>
+  <li><strong>Not Inside a VM</strong> - You cannot run a VM-accelerated emulator inside another
+virtual machine, such as a VirtualBox or VMWare-hosted virtual machine. You must run the emulator
+directly on your system hardware.</li>
+  <li><strong>Other VM Drivers</strong> - If you are running another virtualization technology on
+your system such as VirtualBox or VMWare, you may need to unload the driver for that virtual machine
+hosting software before running an accelerated emulator.</li>
+  <li><strong>OpenGL&reg; Graphics</strong> - Emulation of OpenGL ES graphics may not perform at the
+same level as an actual device.</li>
+</ul>
+
+<p>To use virtual machine acceleration with the emulator, you need the following version of Android
+development tools. Use the <a href="{@docRoot}sdk/installing/index.html#AddingComponents">Android SDK
+Manager</a> to install these components:</p>
+
+<ul>
+  <li>Android SDK Tools, Revision 17 or higher</li>
+  <li>Android x86-based system image</li>
+</ul>
+
+<p>If your development environment meets all of the requirements for running a VM-accelerated
+emulator, you can use the AVD Manager to create an x86-based AVD configuration:</p>
+
+<ol>
+  <li>In the Android SDK Manager, make sure you have an x86-based <strong>System Image</strong>
+    installed for your target Android version. If you do not have an x86 <strong>System
+    Image</strong> installed, select one in the Android SDK Manager and install it.
+    <p class="note"><strong>Tip:</strong> System images are listed under each API Level in the SDK
+    Manager. An x86 system image may not be available for all API levels.</p>
+  </li>
+  <li>Start the AVD Manager and create a new AVD with an x86 value for the
+<strong>CPU/ABI</strong> field. You may need to select a specific <strong>Target</strong> value, or
+select a <strong>Target</strong> value and then select a specific <strong>CPU/ABI</strong>
+option.</li>
+  <li>Name the emulator instance and select any other configuration options.</li>
+  <li>Click <strong>Create AVD</strong> to save the emulator configuration.</li>
+</ol>
+
+<h4 id="vm-windows">Configuring VM Acceleration on Windows</h4>
+
+<p>Virtual machine acceleration for Windows requires the installation of the Intel Hardware
+Accelerated Execution Manager (Intel HAXM). The software requires an Intel CPU with
+Virtualization Technology (VT) support and one of the following operating systems:</p>
+
+<ul>
+  <li>Windows 7 (32/64-bit)</li>
+  <li>Windows Vista (32/64-bit)</li>
+  <li>Windows XP (32-bit only)</li>
+</ul>
+
+<p>To install the virtualization driver:</p>
+
+<ol>
+  <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
+Hardware Accelerated Execution Manager</strong>.</li>
+  <li>After the download completes, execute {@code
+&lt;sdk&gt;/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.exe}.</li>
+  <li>Follow the on-screen instructions to complete installation.</li>
+  <li>After installation completes, confirm that the virtualization driver is operating correctly by
+opening a command prompt window and running the following command:
+    <pre>sc query intelhaxm</pre>
+    <p>You should see a status message including the following information:</p>
+<pre>
+SERVICE_NAME: intelhaxm
+       ...
+       STATE              : 4  RUNNING
+       ...
+</pre>
+  </li>
+</ol>
+
+<p>To run an x86-based emulator with VM acceleration:</p>
+<ul>
+  <li>If you are running the emulator from the command line, just specify an x86-based AVD:
+<pre>emulator -avd &lt;avd_name&gt;</pre>
+    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
+name, otherwise VM acceleration will not be enabled.</p>
+  </li>
+  <li>If you are running the emulator from Android Studio, run your Android application with an x86-based
+AVD:
+    <ol>
+      <li>In Android Studio, click your Android project folder and then select <strong>Run > Edit
+Configurations...</strong></li>
+      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
+run configuration or create a new configuration.</li>
+      <li>Under the <strong>Target Device</strong> options, select the x86-based AVD you created
+previously.</li>
+      <li>Run your Android project using this run configuration.</li>
+    </ol>
+  </li>
+</ul>
+
+<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
+its installer.</p>
+
+<p>You can stop using the virtualization driver by uninstalling it. Re-run the installer or use
+the Control Panel to remove the software.</p>
+
+
+<h4 id="vm-mac">Configuring VM Acceleration on Mac</h4>
+
+<p>Virtual machine acceleration on a Mac requires the installation of the Intel Hardware Accelerated
+Execution Manager (Intel HAXM) kernel extension to allow the Android emulator to make use of CPU
+virtualization extensions. The kernel extension is compatible with Mac OS X Snow Leopard (version
+10.6.0) and higher.</p>
+
+<p>To install the Intel HAXM kernel extension:</p>
+
+<ol>
+  <li>Start the Android SDK Manager, select <strong>Extras</strong> and then select <strong>Intel
+Hardware Accelerated Execution Manager</strong>.
+  <li>After the download completes, execute
+    {@code &lt;sdk&gt;/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg}.</li>
+  <li>Double click the <strong>IntelHAXM.mpkg</strong> icon to begin installation.</li>
+  <li>Follow the on-screen instructions to complete installation.</li>
+  <li>After installation completes, confirm that the new kernel extension is operating correctly by
+opening a terminal window and running the following command:
+    <pre>kextstat | grep intel</pre>
+    <p>You should see a status message containing the following extension name, indicating that the
+      kernel extension is loaded:</p>
+    <pre>com.intel.kext.intelhaxm</pre>
+  </li>
+</ol>
+
+<p>To run an x86-based emulator with VM acceleration:</p>
+<ul>
+  <li>If you are running the emulator from the command line, just specify an x86-based AVD:
+<pre>emulator -avd &lt;avd_name&gt;</pre>
+    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
+name, otherwise VM acceleration will not be enabled.</p>
+  </li>
+  <li>If you are running the emulator from Andriod Studio, run your Android application with an x86-based
+AVD:
+    <ol>
+      <li>In Android Studio, click your Android module folder and then select <strong>Run > Edit
+Configurations...</strong></li>
+      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
+run configuration or create a new configuration.</li>
+      <li>Under the <strong>Target Device</strong> options,
+      select the x86-based AVD you created previously.</li>
+      <li>Run your Android project using this run configuration.</li>
+    </ol>
+  </li>
+</ul>
+
+<p>You can adjust the amount of memory available to the Intel HAXM kernel extension by re-running
+the installer.</p>
+
+<p>You can stop using the virtualization kernel driver by uninstalling it. Before removing it, shut
+down any running x86 emulators. To unload the virtualization kernel driver, run the following
+command in a terminal window:</p>
+
+<pre>sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh</pre>
+
+<h4 id="vm-linux">Configuring VM Acceleration on Linux</h4>
+
+<p>Linux-based systems support virtual machine acceleration through the KVM software package. Follow
+<a href="https://www.google.com/?q=kvm+installation">instructions for installing KVM</a> on your
+Linux system, and verify that KVM is enabled. In addition to following the installation
+instructions, be aware of these configuration requirements:</p>
+
+<ul>
+  <li>Running KVM requires specific user permissions, make sure you have sufficient permissions
+according to the KVM installation instructions.</li>
+  <li>If you use another virtualization technology in your Linux platform, unload its kernel driver
+before running the x86 emulator. For example, the VirtualBox driver program is {@code vboxdrv}.</li>
+</ul>
+
+<p>To run an x86-based emulator with VM acceleration:</p>
+
+<ul>
+  <li>If you are running the emulator from the command line, start the emulator with an x86-based
+AVD and include the KVM options:
+<pre>emulator -avd &lt;avd_name&gt; -qemu -m 512 -enable-kvm</pre>
+    <p class="note"><strong>Note:</strong> You must provide an x86-based AVD configuration
+name, otherwise VM acceleration will not be enabled.</p>
+  </li>
+  <li>If you are running the emulator from Android Studio, run your Android application with an
+  x86-based AVD and include the KVM options:
+    <ol>
+      <li>In Android Studio, click your Android module folder and then select <strong>Run > Edit
+Configurations...</strong></li>
+      <li>In the left panel of the <strong>Run/Debug Configurations</strong> dialog, select your Android
+run configuration or create a new configuration.</li>
+      <li>Under the <strong>Target Device</strong> options, select the x86-based AVD you created
+previously.</li>
+      <li>In the <strong>Emulator</strong> tab, in the
+      <strong>Additional command line options</strong> field, enter:
+      <pre>-qemu -m 512 -enable-kvm</pre>
+      </li>
+      <li>Run your Android project using this run configuration.</li>
+    </ol>
+  </li>
+</ul>
+
+<p class="note"><strong>Important:</strong> When using the {@code -qemu} command line option, make sure
+it is the last parameter in your command. All subsequent options are interpreted as qemu-specific
+parameters.</p>
+
+
+<h2 id="sdcard">Using SD Card Emulation</h2>
+
+<p>You can create a disk image and then load it to the emulator at startup, to
+simulate the presence of a user's SD card in the device. To do this, you can specify
+an SD card image when you create an AVD, or you can use the mksdcard utility included
+in the SDK.</p>
+
+<p>The following sections describe how to create an SD card disk image, how to copy
+files to it, and how to load it in the emulator at startup. </p>
+
+<p>Note that you can only load a disk image at emulator startup. Similarly, you
+can not remove a simulated SD card from a running emulator. However, you can
+browse, send files to, and copy/remove files from a simulated SD card either
+with adb or the emulator. </p>
+
+<p>The emulator supports emulated SDHC cards, so you can create an SD card image
+of any size up to 128 gigabytes.</p>
+
+
+<h3 id="sdcard-creating">Creating an SD card image</h3>
+
+<p>There are several ways of creating an SD card image. The easiest way is to use the
+<strong>AVD Manager</strong> to create a new SD card by specifying a size when you create an AVD.
+You can also use the {@code android} command line tool when creating an AVD. Just add the
+<code>-c</code> option to your command: </p>
+
+<pre>android create avd -n &lt;avd_name&gt; -t &lt;targetID&gt; -c &lt;size&gt;[K|M]</pre>
+
+<p>The <code>-c</code> option can also be used to to specify a path to an SD card
+image for the new AVD. For more information, see <a
+href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing Virtual Devices
+from the Command Line</a>.
+</p>
+
+<p>You can also use the mksdcard tool, included in the SDK, to create a FAT32 disk
+image that you can load in the emulator at startup. You can access mksdcard in
+the tools/ directory of the SDK and create a disk image like this: </p>
+
+<pre>mksdcard &lt;size&gt; &lt;file&gt;</pre>
+
+<p>For example:</p>
+
+<pre>mksdcard 1024M sdcard1.iso</pre>
+
+<p>For more information, see <a
+href="{@docRoot}tools/help/mksdcard.html"><code>mksdcard</code></a>.</p>
+
+
+<h3 id="sdcard-files">Copying files to an SD card image</h3>
+
+<p>Once you have created the disk image, you can copy files to it prior to
+loading it in the emulator. To copy files, you can mount the image as a loop
+device and then copy the files to it, or you can use a utility such as {@code mtools} to
+copy the files directly to the image. The {@code mtools} package is available for Linux,
+Mac, and Windows.</p>
+
+<p>Alternatively, you can use the {@code adb push} command to move files onto an SD card image
+while it is loaded in an emulator. For more information see the <a
+href="{@docRoot}tools/help/adb.html#copyfiles">{@code adb push}</a> documentation.</p>
+
+<h3 id="sdcard-loading">Loading an SD card image</h3>
+
+<p>By default, the emulator loads the SD card image that is stored with the active
+AVD (see the <code>-avd</code> startup option).</p>
+
+<p>Alternatively, you can start the emulator with the
+<code>-sdcard</code> flag and specify the name and path of your image (relative
+to the current working directory): </p>
+
+<pre>emulator -sdcard &lt;filepath&gt;</pre>
+
+
+<h2 id="diskimages">Working With Emulator Disk Images</h2>
+
+<p>The emulator uses mountable disk images stored on your development machine to
+simulate flash (or similar) partitions on an actual device. For example, it uses a
+disk image containing an emulator-specific kernel, the Android system, a
+ramdisk image, and writeable images for user data and simulated SD card.</p>
+
+<p>To run properly, the emulator requires access to a specific set of disk image
+files. By default, the Emulator always looks for the disk images in the
+private storage area of the AVD in use. If no images exist there when
+the Emulator is launched, it creates the images in the AVD directory based on
+default versions stored in the SDK. </p>
+
+<p class="note"><strong>Note:</strong> The default storage location for
+AVDs is in <code>~/.android/avd</code> on OS X and Linux, <code>C:\Documents and
+Settings\&lt;user&gt;\.android\</code> on Windows XP, and
+<code>C:\Users\&lt;user&gt;\.android\</code>
+on Windows Vista.</p>
+
+<p>To let you use alternate or custom versions of the image files, the emulator
+provides startup options that override the default locations and filenames of
+the image files. When you use one of these options, the emulator searches for the image
+file under the image name or location that you specify; if it can not locate the
+image, it reverts to using the default names and location.</p>
+
+<p>The emulator uses three types of image files: default image files, runtime
+image files, and temporary image files. The sections below describe how to
+override the location/name of each type of file. </p>
+
+<h3 id="defaultimages">Default image files</h3>
+
+<p>When the emulator launches, but does not find an existing user data image in
+the active AVD's storage area, it creates a new one from a default version
+included in the SDK. The default user data image is read-only. The image
+files are read-only.</p>
+
+<p>The emulator provides the <code>-system &lt;dir&gt;</code> startup option to
+let you override the location where the emulator looks for the default
+user data image. </p>
+
+<p>The emulator also provides a startup option that lets you override the name
+of the default user data image, as described in the following table. When you use the
+option, the emulator looks in the default directory, or in a custom location
+(if you specified <code>-system &lt;dir&gt;</code>). </p>
+
+
+<table>
+<tr>
+  <th width="10%" >Name</th>
+    <th width="30%" >Description</th>
+    <th width="40%" >Comments</th>
+</tr>
+
+<!--
+<tr>
+  <td><code>kernel-qemu.img</code></td>
+  <td>The emulator-specific Linux kernel image</td>
+  <td>Override using <code>-kernel &lt;file&gt;</code></td>
+</tr>
+
+<tr>
+  <td><code>ramdisk.img</code></td>
+  <td>The ramdisk image used to boot the system.</td>
+  <td>Override using <code>-ramdisk &lt;file&gt;</code></td>
+</tr>
+
+<tr>
+  <td><code>system.img</code></td>
+  <td>The <em>initial</em> Android system image.</td>
+  <td>Override using <code>-image &lt;file&gt;</code></td>
+</tr>
+-->
+<tr>
+  <td><code>userdata.img</code></td>
+  <td>The <em>initial</em> user-data disk image</td>
+  <td>Override using <code>-initdata &lt;file&gt;</code>. Also see
+<code>-data &lt;file&gt;</code>, below.</td>
+</tr>
+
+</table>
+
+<h3 id="runtimeimages">Runtime images: user data and SD card</h3>
+
+<p>At runtime, the emulator reads and writes data to two disk images: a
+user-data image and (optionally) an SD card image. These images emulate the user-data
+partition and removable storage media on actual device. </p>
+
+<p>The emulator provides a default user-data disk image. At startup, the emulator
+creates the default image as a copy of the system user-data image (user-data.img),
+described above. The emulator stores the new image with the files of the active AVD.</p>
+
+<!--
+<p>The emulator provides a startup option, <code>-datadir &lt;dir&gt;</code>,
+that you can use to override the location under which the emulator looks for the runtime
+image files. </p>
+-->
+
+<p>The emulator provides startup options to let you override the actual names and storage
+locations of the runtime images to load, as described in the following table. When you use one
+of these options, the emulator looks for the specified file(s) in the current working directory,
+in the AVD directory, or in a custom location (if you specified a path with the filename). </p>
+
+<table>
+<tr>
+  <th width="10%" >Name</th>
+    <th width="30%" >Description</th>
+    <th width="40%" >Comments</th>
+</tr>
+<tr>
+  <td><code>userdata-qemu.img</code></td>
+  <td>An image to which the emulator writes runtime user-data for a unique user.</td>
+  <td>Override using <code>-data &lt;filepath&gt;</code>, where <code>&lt;filepath&gt;</code> is the
+path the image, relative to the current working directory. If you supply a filename only,
+the emulator looks for the file in the current working directory. If the file at <code>&lt;filepath&gt;</code> does
+not exist, the emulator creates an image from the default <code>userdata.img</code>, stores it under the name you
+specified, and persists user data to it at shutdown. </td>
+</tr>
+
+<tr>
+  <td><code>sdcard.img</code></td>
+  <td>An image representing an SD card inserted into the emulated device.</td>
+  <td>Override using <code>-sdcard &lt;filepath&gt;</code>, where <code>&lt;filepath&gt;</code> is the
+path the image, relative to the current working directory. If you supply a filename only,
+the emulator looks for the file in the current working directory. </td>
+</tr>
+
+</table>
+
+<h4>User-Data Image</h4>
+
+<p>Each emulator instance uses a writeable user-data image to store user- and
+session-specific data. For example, it uses the image to store a unique user's
+installed application data, settings, databases, and files. </p>
+
+<p>At startup, the emulator attempts to load a user-data image stored during
+a previous session. It looks for the file in the current working directory,
+in the AVD directory described in a previous section and at the custom location/name
+that you specified at startup. </p>
+
+<ul>
+<li>If it finds a user-data image, it mounts the image and makes it available
+to the system for reading and writing of user data. </li>
+<li>If it does not find one, it creates an image by copying the system user-data
+image (userdata.img), described above. At device power-off, the system persists
+the user data to the image, so that it will be available in the next session.
+Note that the emulator stores the new disk image at the location/name that you
+specify in <code>-data</code> startup option.</li>
+</ul>
+
+<p class="note"><strong>Note:</strong> Because of the AVD configurations used in the emulator,
+each emulator instance gets its own dedicated storage. There is no longer a need
+to use the <code>-d</code> option to specify an instance-specific storage area.</p>
+
+<h4>SD Card</h4>
+
+<P>Optionally, you can create a writeable disk image that the emulator can use
+to simulate removeable storage in an actual device. For information about how to create an
+emulated SD card and load it in the emulator, see <a href="#sdcard">SD Card Emulation</a></p>
+
+<p>You can also use the android tool to automatically create an SD Card image
+for you, when creating an AVD. For more information, see <a
+href="{@docRoot}tools/devices/managing-avds.html">Managing Virtual Devices with AVD
+Manager</a>.
+
+
+<h3 id="temporaryimages">Temporary Images</h3>
+
+<p>The emulator creates two writeable images at startup that it deletes at
+device power-off. The images are: </p>
+
+<ul>
+  <li>A writable copy of the Android system image</li>
+  <li>The <code>/cache</code> partition image</li>
+</ul>
+
+<p>The emulator does not permit renaming the temporary system image or
+persisting it at device power-off. </p>
+
+<p>The <code>/cache</code> partition image is initially empty, and is used by
+the browser to cache downloaded web pages and images. The emulator provides an
+<code>-cache &lt;file&gt;</code>, which specifies the name of the file in which
+to persist the <code>/cache</code> image at device power-off. If <code>&lt;file&gt;
+</code> does not exist, the emulator creates it as an empty file. </p>
+
+<p>You can also disable the use of the cache partition by specifying the
+<code>-nocache</code> option at startup. </p>
+
+
+<h2 id="emulatornetworking">Setting Up Emulator Networking</h2>
+
+<p>The emulator provides versatile networking capabilities that you can use to
+set up complex modeling and testing environments for your application. The
+sections below introduce the emulator's network architecture and capabilities.
+</p>
+
+<h3 id="networkaddresses">Network Address Space</h3>
+
+<p>Each instance of the emulator runs behind a virtual router/firewall service
+that isolates it from your development machine's network interfaces and settings
+and from the internet. An emulated device can not see your development machine
+or other emulator instances on the network. Instead, it sees only that it is
+connected through Ethernet to a router/firewall.</p>
+
+<p>The virtual router for each instance manages the 10.0.2/24 network address
+space &mdash; all addresses managed by the router are in the form of
+10.0.2.&lt;xx&gt;, where &lt;xx&gt; is a number. Addresses within this space are
+pre-allocated by the emulator/router as follows:</p>
+
+<table>
+  <tr>
+    <th>Network Address</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td>10.0.2.1</td>
+    <td>Router/gateway address </td>
+  </tr>
+  <tr>
+    <td>10.0.2.2</td>
+    <td>Special alias to your host loopback interface (i.e., 127.0.0.1 on your
+development machine)</td>
+  </tr>
+  <tr>
+    <td>10.0.2.3</td>
+    <td>First DNS server</td>
+  </tr>
+  <tr>
+    <td>10.0.2.4 / 10.0.2.5 / 10.0.2.6</td>
+    <td>Optional second, third and fourth DNS server (if any) </td>
+  </tr>
+  <tr>
+    <td>10.0.2.15</td>
+    <td>The emulated device's own network/ethernet interface</td>
+  </tr>
+  <tr>
+    <td>127.0.0.1</td>
+    <td>The emulated device's own loopback interface </td>
+  </tr>
+</table>
+
+<p>Note that the same address assignments are used by all running emulator
+instances. That means that if you have two instances running concurrently on
+your machine, each will have its own router and, behind that, each will have an
+IP address of 10.0.2.15. The instances are isolated by a router and can
+<em>not</em> see each other on the same network. For information about how to
+let emulator instances communicate over TCP/UDP, see <a
+href="#connecting">Connecting Emulator Instances</a>.</p>
+
+<p>Also note that the address 127.0.0.1 on your development machine corresponds
+to the emulator's own loopback interface. If you want to access services running
+on your development machine's loopback interface (a.k.a. 127.0.0.1 on your
+machine), you should use the special address 10.0.2.2 instead.</p>
+
+<p>Finally, note that each emulated device's pre-allocated addresses are
+specific to the Android emulator and will probably be very different on real
+devices (which are also very likely to be NAT-ed, i.e., behind a
+router/firewall)</p>
+
+
+<h3 id="networkinglimitations">Local Networking Limitations</h3>
+
+<p>Android applications running in an emulator can connect to the network available on your
+workstation. However, they connect through the emulator, not directly to hardware, and the emulator
+acts like a normal application on your workstation. This means that the emulator, and thus your
+Android applications, are subject to some limitations:</p>
+
+<ul>
+  <li>Communication with the emulated device may be blocked by a firewall
+program running on your machine.</li>
+  <li>Communication with the emulated device may be blocked by another
+(physical) firewall/router to which your machine is connected.</li>
+</ul>
+
+<p>The emulator's virtual router should be able to handle all outbound TCP and
+UDP connections/messages on behalf of the emulated device, provided your
+development machine's network environment allows it to do so. There are no
+built-in limitations on port numbers or ranges except the one imposed by your
+host operating system and network.</p>
+
+<p>Depending on the environment, the emulator may not be able to support other
+protocols (such as ICMP, used for "ping") might not be supported. Currently, the
+emulator does not support IGMP or multicast. </p>
+
+<h3 id="redirection">Using Network Redirection</h3>
+
+<p>To communicate with an emulator instance behind its virtual router, you need
+to set up network redirection on the virtual router. Clients can then connect
+to a specified guest port on the router, while the router directs traffic
+to/from that port to the emulated device's host port. </p>
+
+<p>To set up the network redirection, you create a mapping of host and guest
+ports/addresses on the emulator instance. There are two ways to set up
+network redirection: using emulator console commands and using the ADB tool, as
+described below. </p>
+
+
+<h4 id="consoleredir">Setting up Redirection through the Emulator Console</h4>
+
+<p>Each emulator instance provides a control console the you can connect to, to
+issue commands that are specific to that instance. You can use the
+<code>redir</code> console command to set up redirection as needed for an
+emulator instance. </p>
+
+<p>First, determine the console port number for the target emulator instance.
+For example, the console port number for the first emulator instance launched is
+5554. Next, connect to the console of the target emulator instance, specifying
+its console port number, as follows: </p>
+
+<pre><code>telnet localhost 5554</code></pre>
+
+<p>Once connected, use the <code>redir</code> command to work with redirection.
+To add a redirection, use:</p>
+
+<pre><code>add&nbsp;&lt;protocol&gt;:&lt;host-port&gt;:&lt;guest-port&gt;</code>
+</pre>
+
+<p>where <code>&lt;protocol&gt;</code> is either <code>tcp</code> or <code>udp</code>,
+and <code>&lt;host-port&gt;</code> and <code>&lt;guest-port&gt;</code> sets the
+mapping between your own machine and the emulated system, respectively. </p>
+
+<p>For example, the following command sets up a redirection that handles all
+incoming TCP connections to your host (development) machine on 127.0.0.1:5000
+and will pass them through to the emulated system's 10.0.2.15:6000.:</p>
+
+<pre>redir add tcp:5000:6000</pre>
+
+<p>To delete a redirection, you can use the <code>redir del</code> command. To
+list all redirection for a specific instance, you can use <code>redir
+list</code>. For more information about these and other console commands, see
+<a href="#console">Using the Emulator Console</a>. </p>
+
+<p>Note that port numbers are restricted by your local environment. this typically
+means that you cannot use host port numbers under 1024 without special
+administrator privileges.  Also, you won't be able to set up a redirection for a
+host port that is already in use by another process on your machine. In that
+case, <code>redir</code> generates an error message to that effect. </p>
+
+<h4 id="adbredir">Setting Up Redirection through ADB</h4>
+
+<p>The Android Debug Bridge (ADB) tool provides port forwarding, an alternate
+way for you to set up network redirection. For more information, see <a
+href="{@docRoot}tools/help/adb.html#forwardports">Forwarding Ports</a> in the ADB
+documentation.</p>
+
+<p>Note that ADB does not currently offer any way to remove a redirection,
+except by killing the ADB server.</p>
+
+
+<h3 id="dns">Configuring the Emulator's DNS Settings</h3>
+
+<p>At startup, the emulator reads the list of DNS servers that your system is
+currently using. It then stores the IP addresses of up to four servers on this
+list and sets up aliases to them on the emulated addresses 10.0.2.3, 10.0.2.4,
+10.0.2.5 and 10.0.2.6 as needed.  </p>
+
+<p>On Linux and OS X, the emulator obtains the DNS server addresses by parsing
+the file <code>/etc/resolv.conf</code>. On Windows, the emulator obtains the
+addresses by calling the <code>GetNetworkParams()</code> API. Note that this
+usually means that the emulator ignores the content of your "hosts" file
+(<code>/etc/hosts</code> on Linux/OS X, <code>%WINDOWS%/system32/HOSTS</code>
+ on Windows).</P>
+
+<p>When starting the emulator at the command line, you can also use the
+<code>-dns-server &lt;serverList&gt;</code> option to manually specify the
+addresses of DNS servers to use, where &lt;serverList&gt; is a comma-separated
+list of server names or IP addresses. You might find this option useful if you
+encounter DNS resolution problems in the emulated network (for example, an
+"Unknown Host error" message that appears when using the web browser).</p>
+
+
+<h3 id="proxy">Using the Emulator with a Proxy</h3>
+
+<p>If your emulator must access the Internet through a proxy server, you can use
+the <code>-http-proxy &lt;proxy&gt;</code> option when starting the emulator, to
+set up the appropriate redirection. In this case, you specify proxy information
+in <code>&lt;proxy&gt;</code> in one of these formats:</p>
+
+<pre>http://&lt;machineName&gt;:&lt;port&gt;</pre>
+
+<p>or</p>
+
+<pre>http://&lt;username&gt;:&lt;password&gt;@&lt;machineName&gt;:&lt;port&gt;</pre>
+
+<p>The <code>-http-proxy</code> option forces the emulator to use the specified
+HTTP/HTTPS proxy for all outgoing TCP connections. Redirection for UDP is not
+currently supported.</p>
+
+<p>Alternatively, you can define the environment variable
+<code>http_proxy</code> to the value you want to use for
+<code>&lt;proxy&gt;</code>. In this case, you do not need to specify a value for
+<code>&lt;proxy&gt;</code> in the <code>-http-proxy</code> command &mdash; the
+emulator checks the value of the <code>http_proxy</code> environment variable at
+startup and uses its value automatically, if defined. </p>
+
+<p>You can use the <code>-verbose-proxy</code> option to diagnose proxy
+connection problems.</p>
+
+
+<h3 id="connecting">Interconnecting Emulator Instances</h3>
+
+<p>To allow one emulator instance to communicate with another, you must set up
+the necessary network redirection as illustrated below. </p>
+
+<p>Assume that your environment is</p>
+
+<ul>
+  <li>A is you development machine</li>
+  <li>B is your first emulator instance, running on A</li>
+  <li>C is your second emulator instance, also running on A</li>
+</ul>
+
+<p>and you want to run a server on B, to which C will connect, here is how you
+could set it up: </p>
+
+<ol>
+  <li>Set up the server on B, listening to
+<code>10.0.2.15:&lt;serverPort&gt;</code></li>
+  <li>On B's console, set up a redirection from
+<code>A:localhost:&lt;localPort&gt;</code> to <code>
+B:10.0.2.15:&lt;serverPort&gt;</code></li>
+  <li>On C, have the client connect to <code>10.0.2.2:&lt;localPort&gt;</code></li>
+</ol>
+
+<p>For example, if you wanted to run an HTTP server, you can select
+<code>&lt;serverPort&gt;</code> as 80 and <code>&lt;localPort&gt;</code> as
+8080:</p>
+
+<ul>
+  <li>B listens on 10.0.2.15:80</li>
+  <li>On B's console, issue <code>redir add tcp:8080:80</code></li>
+  <li>C connects to 10.0.2.2:8080</li>
+</ul>
+
+<h3 id="calling">Sending a Voice Call or SMS to Another Emulator Instance</h3>
+
+<p>The emulator automatically forwards simulated voice calls and SMS messages from one instance to
+another. To send a voice call or SMS, use the dialer application or SMS application, respectively,
+from one of the emulators.</p>
+
+<p>To initiate a simulated voice call to another emulator instance:</p>
+<ol>
+<li>Launch the dialer application on the originating emulator instance.</li>
+<li>As the number to dial, enter the console port number of the instance you'd like to call. You can determine
+  the console port number of the target instance by checking its window title, where the
+  console port number is reported as "Android Emulator (&lt;port&gt;). </li>
+<li>Press "Dial". A new inbound call appears in the target emulator instance. </li>
+</ol>
+
+<p>To send an SMS message to another emulator instance, launch the SMS application (if available). Specify the console port number of the target emulator instance as as the SMS address, enter the message text, and send the message. The message is delivered to the target emulator instance. </p>
+
+<p>You can also connect to an emulator instance's console to simulate an incoming voice call or SMS. For more information, see <a href="#telephony">Telephony Emulation</a> and <a href="#sms">SMS Emulation</a>.
+
+
+<h2 id="console">Using the Emulator Console</h2>
+
+<p>Each running emulator instance provides a console that lets you query and control the emulated
+device environment. For example, you can use the console to manage port redirection, network
+characteristics, and telephony events while your application is running on the emulator. To
+access the console and enter commands, use telnet to connect to the console's port number.</p>
+
+<p>To connect to the console of any running emulator instance at any time, use this command: </p>
+
+<pre>telnet localhost &lt;console-port&gt;</pre>
+
+<p>An emulator instance occupies a pair of adjacent ports: a console port and an  {@code adb} port.
+The port numbers differ by 1, with the  {@code adb} port having the higher port number. The console
+of the first emulator instance running on a given machine uses console port 5554 and  {@code adb}
+port 5555. Subsequent instances use port numbers increasing by two &mdash; for example, 5556/5557,
+5558/5559, and so on. Up to 16 concurrent emulator instances can run a console facility. </p>
+
+<p>To connect to the emulator console, you must specify a valid console port. If multiple emulator instances are running, you need to determine the console port of the emulator instance you want to connect to. You can find the instance's console port listed in the title of the instance window. For example, here's the window title for an instance whose console port is 5554:</p>
+
+<p><code>Android Emulator (5554)</code></p>
+
+<p>Alternatively, you can use the <code>adb devices</code> command, which prints a list of running emulator instances and their console port numbers. For more information, see <a href="{@docRoot}tools/help/adb.html#devicestatus">Querying for Emulator/Device Instances</a> in the adb documentation.</p>
+
+<p class="note">Note: The emulator listens for connections on ports 5554-5587 and accepts connections only from localhost.</p>
+
+<p>Once you are connected to the console, you can then enter <code>help [command]</code> to see a list of console commands and learn about specific commands. </p>
+
+<p>To exit the console session, use <code>quit</code> or <code>exit</code>.</p>
+
+<p>The following sections below describe the major functional areas of the console.</p>
+
+
+<h3 id="portredirection">Port Redirection</h3>
+
+<p>You can use the console to add and remove port redirection while the emulator is running. After
+you connect to the console, manage port redirection by entering the following command:</p>
+
+<pre>redir &lt;list|add|del&gt; </pre>
+
+<p>The <code>redir</code> command supports the subcommands listed in the table below. </p>
+
+<table>
+<tr>
+  <th width="25%" >Subcommand
+  <th width="30%" >Description</th>
+  <th width="35%">Comments</th>
+</tr>
+
+  <tr>
+    <td><code>list</code></td>
+    <td>List the current port redirection.</td>
+  <td>&nbsp;</td>
+  </tr>
+
+
+<tr>
+ <td><code>add&nbsp;&lt;protocol&gt;:&lt;host-port&gt;:&lt;guest-port&gt;</code></td>
+  <td>Add a new port redirection.</td>
+<td><ul><li>&lt;protocol&gt; must be either &quot;tcp&quot; or &quot;udp&quot;</li>
+<li>&lt;host-port&gt; is the port number to open on the host</li>
+<li>&lt;guest-port&gt; is the port number to route data to on the emulator/device</li>
+</ul></td>
+</tr>
+<tr>
+  <td><code>del &lt;protocol&gt;:&lt;host-port&gt;</code></td>
+  <td>Delete a port redirection.</td>
+<td>The meanings of &lt;protocol&gt; and &lt;host-port&gt; are listed in the previous row.</td>
+</tr>
+</table>
+
+
+<h3 id="geo">Geo Location Provider Emulation</h3>
+
+<p>You can use the console to set the geographic location reported to the applications running
+inside an emulator. Use the <code>geo</code> command to send a simple GPS fix to the
+emulator, with or without NMEA 1083 formatting:</p>
+
+<pre>geo &lt;fix|nmea&gt;</pre>
+
+<p>The <code>geo</code> command supports the subcommands listed in the table below.</p>
+
+<table>
+<tr>
+  <th width="25%">Subcommand</th>
+  <th width="30%">Description</th>
+  <th width="35%">Comments</th>
+</tr>
+
+  <tr>
+    <td><code>fix &lt;longitude&gt; &lt;latitude&gt; [&lt;altitude&gt;]</code></td>
+    <td>Send a simple GPS fix to the emulator instance.</td>
+  <td>Specify longitude and latitude in decimal degrees. Specify altitude in meters.</td>
+  </tr>
+<tr>
+  <td><code>nmea &lt;sentence&gt;</code></td>
+  <td>Send an NMEA 0183 sentence to the emulated device, as if it were sent from an emulated GPS modem.</td>
+<td><code>&lt;sentence&gt;</code> must begin with '$GP'. Only '$GPGGA' and '$GPRCM' sentences are currently supported.</td>
+</tr>
+</table>
+
+<p>You can issue the <code>geo</code> command as soon as an emulator instance is running. The
+emulator sets the location you enter by creating a mock location provider. This provider responds to
+location listeners set by applications, and also supplies the location to the {@link
+android.location.LocationManager}. Any application can query the location manager to obtain the
+current GPS fix for the emulated device by calling:
+
+<pre>LocationManager.getLastKnownLocation("gps")</pre>
+
+<p>For more information about the Location Manager, see {@link android.location.LocationManager}.
+</p>
+
+<h3 id="events">Hardware Events Emulation</h3>
+
+<p>The {@code event} console commands sends hardware events to the emulator. The syntax for this
+command is as follows:</p>
+
+<pre>event &lt;send|types|codes|text&gt;</pre>
+
+<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
+
+<table>
+<tr>
+  <th width="25%" >Subcommand
+  <th width="30%" >Description</th>
+  <th width="35%">Comments</th>
+</tr>
+
+  <tr>
+    <td><code>send &lt;type&gt;:&lt;code&gt;:&lt;value&gt; [...]</code></td>
+    <td>Send one or more events to the Android kernel. </td>
+  <td>You can use text names or integers for <code>&lt;type&gt;</code> and <code>&lt;value&gt;</code>.</td>
+  </tr>
+<tr>
+  <td><code>types</code></td>
+  <td>List all <code>&lt;type&gt;</code> string aliases supported by the <code>event</code> subcommands.</td>
+<td>&nbsp;</td>
+</tr>
+<tr>
+  <td><code>codes &lt;type&gt;</code></td>
+  <td>List all <code>&lt;codes&gt;</code> string aliases supported by the <code>event</code>
+   subcommands for the specified <code>&lt;type&gt;</code>.</td>
+<td>&nbsp;</td>
+</tr>
+<tr>
+  <td><code>event text &lt;message&gt;</code></td>
+  <td>Simulate keypresses to send the specified string of characters as a message,</td>
+<td>The message must be a UTF-8 string. Unicode posts will be reverse-mapped according to the current device keyboard. Unsupported characters will be discarded silently.</td>
+</tr>
+</table>
+
+
+<h3 id="power">Device Power Characteristics</h3>
+
+<p>The {@code power} command controls the power state reported by the emulator to applications. The
+syntax for this command is as follows: </p>
+
+<pre>power &lt;display|ac|status|present|health|capacity&gt;</pre>
+
+<p>The <code>event</code> command supports the subcommands listed in the table below. </p>
+
+<table>
+<tr>
+  <th width="25%" >Subcommand </th>
+  <th width="30%" >Description</th>
+  <th width="35%">Comments</th>
+</tr>
+
+  <tr>
+    <td><code>display</code></td>
+    <td>Display battery and charger state.</td>
+  <td>&nbsp;</td>
+  </tr>
+<tr>
+  <td><code>ac &lt;on|off&gt;</code></td>
+  <td>Set AC charging state to on or off. </td>
+<td>&nbsp;</td>
+</tr>
+<tr>
+  <td><code>status &lt;unknown|charging|discharging|not-charging|full&gt;</code></td>
+  <td>Change battery status as specified.</td>
+<td>&nbsp;</td>
+</tr>
+
+<tr>
+  <td><code>present &lt;true|false&gt;</code></td>
+  <td>Set battery presence state.</td>
+<td>&nbsp;</td>
+</tr>
+<tr>
+  <td><code>health &lt;unknown|good|overheat|dead|overvoltage|failure&gt;</code></td>
+  <td>Set battery health state.</td>
+<td>&nbsp;</td>
+</tr>
+<tr>
+  <td><code>capacity &lt;percent&gt;</code></td>
+  <td>Set remaining battery capacity state (0-100).</td>
+<td>&nbsp;</td>
+</tr>
+</table>
+
+
+<h3 id="netstatus">Network Status</h3>
+
+<p>You can use the console to check the network status and current delay and speed characteristics. To do so, connect to the console and use the <code>netstatus</code> command. Here's an example of the command and its output. </p>
+
+<pre>network status
+</pre>
+
+
+<h3 id="netdelay">Network Delay Emulation</h3>
+
+<p>The emulator lets you simulate various network latency levels, so that you can test your
+application in an environment more typical of the actual conditions in which it will run. You can
+set a latency level or range at emulator startup or you can use the console to change the latency,
+while the application is running in the emulator. </p>
+
+<p>To set latency at emulator startup, use the  <code>-netdelay</code> emulator option with a
+supported <code>&lt;delay&gt;</code> value, as listed in the table below. Here are some
+examples:</p>
+
+<pre>emulator -netdelay gprs
+emulator -netdelay 40 100</pre>
+
+<p>To make changes to  network delay while the emulator is running, connect to the console and use
+the <code>netdelay</code> command with a supported <code>&lt;delay&gt;</code> value from the table
+below.</p>
+
+<pre>network delay gprs</pre>
+
+<p>The format of network &lt;delay&gt; is one of the following (numbers are milliseconds):</p>
+
+<table style="clear:right;width:100%;">
+<tr>
+  <th width="30%" >Value</th>
+  <th width="35%" >Description</th><th width="35%">Comments</th></tr>
+
+  <tr><td><code>gprs</code></td><td>GPRS</td>
+  <td>(min 150, max 550)</td>
+  </tr>
+
+<tr><td><code>edge</code></td><td>EDGE/EGPRS</td>
+<td>(min 80, max 400)</td>
+</tr>
+<tr><td><code>umts</code></td><td>UMTS/3G</td>
+<td>(min 35, max 200)</td>
+</tr>
+<tr><td><code>none</code></td><td>No latency</td><td>(min 0, max 0)</td></tr>
+<tr><td><code>&lt;num&gt;</code></td>
+<td>Emulate an exact latency  (milliseconds).</td>
+<td>&nbsp;</td></tr>
+<tr><td><code>&lt;min&gt;:&lt;max&gt;</code></td>
+<td>Emulate an specified latency range (min, max milliseconds).</td>
+<td>&nbsp;</td></tr>
+</table>
+
+
+<h3 id="netspeed">Network Speed Emulation</h3>
+
+<p>The emulator also lets you simulate various network transfer rates.
+You can set a transfer rate or range at emulator startup or you can use the console to change the
+rate, while the application is running in the emulator.</p>
+
+<p>To set the network speed at emulator startup, use the  <code>-netspeed</code> emulator option with a supported
+<code>&lt;speed&gt;</code> value, as listed in the table below. Here are some examples:</p>
+
+<pre>emulator -netspeed gsm
+emulator -netspeed 14.4 80</pre>
+
+<p>To make changes to network speed while the emulator is running, connect to the console and use
+the <code>netspeed</code> command with a supported <code>&lt;speed&gt;</code> value from the table
+below.</p>
+
+<pre>network speed 14.4 80</pre>
+
+<p>The format of network <code>&lt;speed&gt;</code> is one of the following (numbers are
+kilobits/sec):</p>
+<table style="clear:right;width:100%;">
+<tbody>
+<tr>
+  <th width="30%">Value</th>
+  <th width="35%">Description</th><th width="35%">Comments</th></tr>
+
+  <tr>
+  <td><code>gsm</code></td>
+  <td>GSM/CSD</td><td>(Up: 14.4, down: 14.4)</td></tr>
+<tr>
+  <td><code>hscsd</code></td>
+  <td>HSCSD</td><td>(Up: 14.4, down: 43.2)</td></tr>
+<tr>
+  <td><code>gprs</code></td>
+  <td>GPRS</td><td>(Up: 40.0, down: 80.0)</td></tr>
+<tr>
+  <td><code>edge</code></td>
+  <td>EDGE/EGPRS</td>
+  <td>(Up: 118.4, down: 236.8)</td>
+</tr>
+<tr>
+  <td><code>umts</code></td>
+  <td>UMTS/3G</td><td>(Up: 128.0, down: 1920.0)</td></tr>
+<tr>
+  <td><code>hsdpa</code></td>
+  <td>HSDPA</td><td>(Up: 348.0, down: 14400.0)</td></tr>
+<tr>
+  <td><code>full</code></td>
+  <td>no limit</td><td>(Up: 0.0, down: 0.0)</td></tr>
+<tr>
+  <td><code>&lt;num&gt;</code></td>
+  <td>Set an exact rate used for both upload and download.</td><td></td></tr>
+<tr>
+  <td><code>&lt;up&gt;:&lt;down&gt;</code></td>
+  <td>Set exact rates for upload and download separately.</td><td></td></tr>
+</table>
+
+
+<h3 id="telephony">Telephony Emulation</h3>
+
+<p>The Android emulator includes its own GSM emulated modem that lets you simulate telephony
+functions in the emulator. For example, you can simulate inbound phone calls, establish data
+connections and terminate them. The Android system handles simulated calls exactly as it would
+actual calls. The emulator does not support call audio.</p>
+
+<p>You can use the {@code gsm} command to access the emulator's telephony functions after connecting
+to the console. The syntax for this command is as follows:</p>
+
+<pre>gsm &lt;call|accept|busy|cancel|data|hold|list|voice|status&gt; </pre>
+
+<p>The <code>gsm</code> command supports the subcommands listed in the table below. </p>
+<table>
+  <tr>
+    <th>Subcommand </th>
+    <th width="25%">Description</th>
+    <th>Comments</th>
+  </tr>
+  <tr>
+    <td><code>call &lt;phonenumber&gt;</code></td>
+    <td>Simulate an inbound phone call from &lt;phonenumber&gt;.</td>
+    <td>&nbsp;</td>
+  </tr>
+  <tr>
+    <td><code>accept &lt;phonenumber&gt;</code></td>
+    <td>Accept an inbound call from &lt;phonenumber&gt; and change the call's state "active".</td>
+    <td>You can change a call's state to "active" only if its current state is "waiting" or "held".</td>
+  </tr>
+  <tr>
+    <td><code>busy &lt;phonenumber&gt;</code></td>
+    <td>Close an outbound call to &lt;phonenumber&gt; and change the call's state to "busy".</td>
+    <td>You can change a call's state to "busy" only if its current state is "waiting".</td>
+  </tr>
+  <tr>
+    <td><code>cancel &lt;phonenumber&gt;</code></td>
+    <td>Terminate an inbound or outbound phone call to/from &lt;phonenumber&gt;.</td>
+    <td>&nbsp;</td>
+  </tr>
+  <tr>
+    <td><code>data &lt;state&gt;</code></td>
+    <td>Change the state of the GPRS data connection to &lt;state&gt;.</td>
+    <td>Supported &lt;state&gt; values are:<br />
+    <ul>
+          <li><code>unregistered</code> -- No network available</li>
+          <li><code>home</code> -- On local network, non-roaming</li>
+          <li><code>roaming</code> -- On roaming network</li>
+          <li><code>searching</code> -- Searching networks</li>
+          <li><code>denied</code> -- Emergency calls only</li>
+          <li><code>off</code> -- Same as 'unregistered'</li>
+      <li><code>on</code> -- same as 'home'</li>
+    </ul>
+          </td>
+  </tr>
+  <tr>
+    <td><code>hold</code></td>
+    <td>Change the state of a call to "held". </td>
+    <td>You can change a call's state to "held" only if its current state is   "active" or "waiting". </td>
+  </tr>
+  <tr>
+    <td><code>list</code></td>
+    <td>List all inbound and outbound calls and their states.</td>
+    <td>&nbsp;</td>
+  </tr>
+  <tr>
+    <td><code>voice &lt;state&gt;</code></td>
+    <td>Change the state of the GPRS voice connection to &lt;state&gt;.</td>
+    <td>Supported &lt;state&gt; values are:<br />
+    <ul>
+    <li><code>unregistered</code> -- No network available</li>
+    <li><code>home</code> -- On local network, non-roaming</li>
+    <li><code>roaming</code> -- On roaming network</li>
+    <li><code>searching</code> -- Searching networks</li>
+    <li><code>denied</code> -- Emergency calls only</li>
+    <li><code>off</code> -- Same as 'unregistered'</li>
+    <li><code>on</code> -- Same as 'home'</li>
+    </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>status</code></td>
+    <td>Report the current GSM voice/data state.</td>
+    <td>Values are those described for the <code>voice</code> and <code>data</code> commands.</td>
+  </tr>
+</table>
+
+
+<h3 id="sms">SMS Emulation</h3>
+
+<p>The Android emulator console lets you generate an SMS message and direct it to an emulator
+instance. Once you connect to an emulator instance, you can generate an emulated incoming SMS using
+the following command:</p>
+
+<pre>sms send &lt;senderPhoneNumber&gt; &lt;textmessage&gt;</pre>
+
+<p>where <code>&lt;senderPhoneNumber&gt;</code> contains an arbitrary numeric string. </p>
+
+<p>The console forwards the SMS message to the Android framework, which passes it through to an application that handles that message type. </p>
+
+
+<h3 id="vm">VM State</h3>
+
+<p>You can use the <code>vm</code> command to control the VM on an emulator instance. The syntax for
+this command is as follows: </p>
+
+<pre>vm &lt;start|stop|status&gt;</pre>
+
+<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
+
+<table>
+<tr>
+  <th width="25%">Subcommand</th>
+  <th width="30%">Description</th>
+  <th width="35%">Comments</th>
+</tr>
+<tr>
+    <td><code>start</code></td>
+    <td>Start the VM on the instance. </td>
+  <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>stop</code></td>
+    <td>Stop the VM on the instance. </td>
+  <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>start</code></td>
+    <td>Display the current status of the VM (running or stopped). </td>
+  <td>&nbsp;</td>
+</tr>
+</table>
+
+
+<h3 id="window">Emulator Window</h3>
+
+<p>You can use the <code>window</code> command to manage the emulator window. The syntax for this
+command is as follows: </p>
+
+<pre>window &lt;scale&gt;</pre>
+
+<p>The <code>vm</code> command supports the subcommands listed in the table below. </p>
+
+<table>
+<tr>
+  <th width="25%">Subcommand</th>
+  <th width="30%">Description</th>
+  <th width="35%">Comments</th>
+</tr>
+<tr>
+    <td><code>scale &lt;scale&gt;</code></td>
+    <td>Scale the emulator window.</td>
+  <td>A number between 0.1 and 3 that sets the scaling factor. You can
+  also specify scale as a DPI value if you add the suffix "dpi" to the scale value. A value of "auto"
+  tells the emulator to select the best window size.</td>
+</tr>
+</table>
+
+
+<h3 id="terminating">Terminating an Emulator Instance</h3>
+
+<p>You can terminate an emulator instance through the console, using the <code>kill</code> command.</p>
+
+
+
+
+<h2 id="troubleshooting">Troubleshooting Emulator Problems</h2>
+
+<p>The {@code adb} utility sees the emulator as an actual physical device. For this reason, you
+might have to use the {@code -d} flag with some common {@code adb} commands, such as
+<code>install</code>. The {@code -d} flag lets you specify which of several connected devices to use
+as the target of a command. If you don't specify {@code -d}, the emulator targets the first
+device in its list. For more information about {@code adb}, see <a
+href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>.</p>
+
+<p>For emulators running on Mac OS X, if you see an error {@code Warning: No DNS servers found}
+when starting the emulator, check to see whether you have an <code>/etc/resolv.conf</code> file. If
+not, please run the following line in a command window:</p>
+    <pre>ln -s /private/var/run/resolv.conf /etc/resolv.conf</pre>
+
+<p>See <a href="{@docRoot}resources/faq/index.html">Frequently Asked Questions</a> for more
+troubleshooting information. </p>
diff --git a/docs/html/tools/help/sdk-manager.jd b/docs/html/tools/help/sdk-manager.jd
index c8493dc..aaa1930 100755
--- a/docs/html/tools/help/sdk-manager.jd
+++ b/docs/html/tools/help/sdk-manager.jd
@@ -95,19 +95,27 @@
 <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>. </dd>
 
   <dt>Android Support Library</dt>
-  <dd>Recommended. Includes a static library that allows you to use some of the latest
-Android APIs (such as <a href="{@docRoot}guide/components/fragments.html">fragments</a>,
-plus others not included in the framework at all) on devices running
-a platform version as old as Android 1.6. All of the activity templates available when creating
-a new project with Android Studio
-require this. For more information, read <a
-href="{@docRoot}tools/support-library/index.html">Support Library</a>.</dd>
+  <dd>Recommended. Includes a static library that provides an extended set of
+  APIs that are compatible with most versions of Android. It's required for
+  products such as <a href="{@docRoot}wear/index.html">Android Wear</a>, <a
+  href="{@docRoot}tv/index.html">Android TV</a>, and <a
+  href="https://developers.google.com/cast/">Google Cast</a>. For more
+  information, read <a href="{@docRoot}tools/support-library/index.html">Support
+  Library</a>.
+  </dd>
 
   <dt>Android Support Repository</dt>
   <dd>Recommended. Includes local Maven repository for Support libraries.</dd>
 
   <dt>Google Play services</dt>
-  <dd>Recommended. Includes Google Play services client library and sample code.</dd>
+  <dd>Recommended. Includes the Google Play services client library, which
+  provides a variety of features and services for your 
+  apps, such as <a
+  href="https://developers.google.com/identity/sign-in/android/">Google
+  sign-in</a>,<a
+  href="https://developers.google.com/maps/documentation/android-api/">Google
+  Maps</a>, <a href="https://developers.google.com/games/services/">Games
+  achievements and leaderboards</a>, and much more.</dd>
 
   <dt>Google Repository</dt>
   <dd>Recommended. Includes local Maven repository for Google libraries.</dd>
diff --git a/docs/html/tools/performance/index.jd b/docs/html/tools/performance/index.jd
index fa5af86..299b05e 100644
--- a/docs/html/tools/performance/index.jd
+++ b/docs/html/tools/performance/index.jd
@@ -22,6 +22,17 @@
   visualize the rendering, compute, memory, and battery performance of your
   app.</p>
 
+<p class="note">
+  <strong>Note:</strong> While profiling an app, you should <a href=
+  "{@docRoot}tools/building/building-studio.html#disable-ir">disable Instant
+  Run</a>. There is a small performance impact when <a href=
+  "{@docRoot}tools/building/building-studio.html#instant-run">using Instant
+  Run</a> and a slightly larger impact when updating methods. This
+  performance impact could interfere with information provided by performance
+  profiling tools. Additionally, the stub methods generated while using the
+  feature can complicate stack traces.
+</p>
+
 <h2 id="rendering-tools">Rendering Analysis Tools</h2>
 
 <p>Visualize the rendering behavior and performance of your app.</p>
diff --git a/docs/html/tools/revisions/gradle-plugin.jd b/docs/html/tools/revisions/gradle-plugin.jd
index 540bbcd..9d688d8 100644
--- a/docs/html/tools/revisions/gradle-plugin.jd
+++ b/docs/html/tools/revisions/gradle-plugin.jd
@@ -3,42 +3,249 @@
 @jd:body
 
 <div id="qv-wrapper">
-<div id="qv">
+  <div id="qv">
+    <h2>
+      In this document
+    </h2>
 
-  <h2>See also</h2>
-  <ol>
-     <li><a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a></li>
-     <li><a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a></li>
-  </ol>
+    <ol>
+      <li>
+        <a href="#updating-plugin">Updating the Android Plugin for Gradle
+        Version</a>
+      </li>
 
-</div>
+      <li>
+        <a href="#updating-gradle">Updating the Gradle Version</a>
+      </li>
+
+      <li>
+        <a href="#revisions">Revisions</a>
+      </li>
+    </ol>
+
+    <h2>
+      See also
+    </h2>
+
+    <ol>
+      <li>
+        <a href="{@docRoot}sdk/installing/studio-build.html">Build System
+        Overview</a>
+      </li>
+
+      <li>
+        <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android
+        Plugin for Gradle</a>
+      </li>
+    </ol>
+  </div>
 </div>
 
+<p>
+  The Android build system uses the Android Plugin for Gradle to support
+  building Android applications with the <a href=
+  "http://www.gradle.org/">Gradle</a> build toolkit. The plugin runs
+  independent of Android Studio so the plugin and the Gradle build system can
+  be updated independently of Android Studio.
+</p>
 
-<p>The Android build system uses the Android Plugin for Gradle to support building Android
-applications with the <a href="http://www.gradle.org/">Gradle</a> build toolkit. The plugin runs
-independent of Android Studio so the plugin and the Gradle build system can be updated
-independently of Android Studio.</p>
+<h2 id="updating-plugin">
+  Updating the Android Plugin for Gradle
+</h2>
 
-<p class="note"><strong>Note:</strong> When you update Android Studio or open a project in a
-previous version of Android Studio, Android Studio prompts you to automatically update the plugin
-and Gradle to the latest available versions. You can choose to accept these updates based
-on your project's build requirements. </p>
+<p>
+  When you update Android Studio, you may receive a prompt to automatically
+  update the Android Plugin for Gradle to the latest available version. You
+  can choose to accept the update or manually specify a version based on
+  your project's build requirements.
+</p>
 
+<p>
+  You can specify the <a href=
+  "{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for
+  Gradle</a> version in either the <strong>File</strong> &gt; <strong>Project
+  Structure</strong> &gt; <strong>Project</strong> menu in Android Studio, or
+  the top-level <code>build.gradle</code> file. The plugin version applies to
+  all modules built in that Android Studio project. The following example sets
+  the Android Plugin for Gradle to version 2.0.0 from the
+  <code>build.gradle</code> file:
+</p>
 
-<h2 id="revisions">Revisions</h2>
+<pre>
+buildscript {
+  ...
+  dependencies {
+    classpath 'com.android.tools.build:gradle:2.0.0'
+  }
+}
+</pre>
+<p class="caution">
+  <strong>Caution:</strong> You should not use dynamic dependencies in version
+  numbers, such as <code>'com.android.tools.build:gradle:2.+'</code>. Using
+  this feature can cause unexpected version updates and difficulty resolving
+  version differences.
+</p>
 
-<p>The sections below provide notes about successive releases of
-the Android Plugin for Gradle, as denoted by revision number. To determine what revision of the
-plugin you are using, check the version declaration in the project-level
-<strong>build.gradle</strong> file. </p>
+<p>
+  If the specified plugin version has not been downloaded, Gradle downloads it
+  the next time you build your project or click <strong>Tools</strong> &gt;
+  <strong>Android</strong> &gt; <strong>Sync Project with Gradle Files</strong>
+  from the Android Studio main menu.
+</p>
 
-<p>For a summary of known issues in Android Plugin for Gradle, see <a
-href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</p>
+<h2 id="updating-gradle">
+  Updating Gradle
+</h2>
+
+<p>
+  When you update Android Studio, you may receive a prompt to automatically
+  update Gradle to the latest available version. You can choose to accept the
+  update or manually specify a version based on your project's build
+  requirements.
+</p>
+
+<p>
+  You can specify the Gradle version in either the <strong>File</strong> &gt;
+  <strong>Project Structure</strong> &gt; <strong>Project</strong> menu in
+  Android Studio, or by editing the Gradle distribution reference in the
+  <code>gradle/wrapper/gradle-wrapper.properties</code> file. The following
+  example sets the Gradle version to 2.10 in the
+  <code>gradle-wrapper.properties</code> file.
+</p>
+
+<pre>
+...
+distributionUrl = https\://services.gradle.org/distributions/gradle-2.10-all.zip
+...
+</pre>
+
+<h2 id="revisions">
+  Revisions
+</h2>
+
+<p>
+  For a summary of known issues in Android Plugin for Gradle, visit the
+  <a class="external-link" href="http://tools.android.com/knownissues">Android
+  Tools Project Site</a>.
+</p>
 
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+      alt=""/>Android Plugin for Gradle, Revision 2.0.0</a> <em>(April 2016)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+    <dl>
+    <dt>Dependencies:</dt>
+
+    <dd>
+      <ul>
+        <li>Gradle 2.10 or higher.
+        </li>
+
+        <li>
+          <a href="{@docRoot}tools/revisions/build-tools.html">Build Tools 21.1.1</a>
+          or higher.
+        </li>
+      </ul>
+    </dd>
+
+    <dt>New:</dt>
+    <dd>
+      <ul>
+        <li>Enables <a href=
+        "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a> by
+        supporting bytecode injection, and pushing code and resource updates to a
+        running app on the emulator or a physical device.
+        </li>
+
+        <li>Added support for incremental builds, even when the app isn’t running.
+        Full build times are improved by pushing incremental changes through the
+        <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> to the
+        connected device.
+        </li>
+
+        <li>Added <code>maxProcessCount</code> to control how many slave dex processes can
+        be spawned concurrently. The following code, in the module-level
+        <code>build.gradle</code> file, sets the maximum number of concurrent processes
+        to 4:
+<pre>
+android {
+  ...
+  dexOptions {
+  maxProcessCount = 4
+  }
+}
+</pre>
+        </li>
+
+        <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
+        of dependencies, which are not supported with Proguard. This improves the build
+        speed of your debug build variant. Because the experimental shrinker does not
+        support optimization and obfuscation, you should enable Proguard for your
+        release builds. To enable the experimental shrinker for your debug builds, add
+        the following to your module-level <code>build.gradle</code> file:
+
+<pre>
+android {
+  ...
+  buildTypes {
+    debug {
+      minifyEnabed true
+      useProguard false
+    }
+    release {
+      minifyEnabed true
+      useProguard true // this is a default setting
+    }
+  }
+}
+</pre>
+        </li>
+
+        <li>Added logging support and improved performance for the resource shrinker.
+        The resource shrinker now logs all of its operations into a <code>resources.txt</code>
+        file located in the same folder as the Proguard log files.
+        </li>
+      </ul>
+    </dd>
+
+    <dt>Changed behavior:</dt>
+    <dd>
+      <ul>
+        <li>When <code>minSdkVersion</code> is set to 18 or higher, APK signing uses
+        SHA256.
+        </li>
+
+        <li>DSA and ECDSA keys can now sign APK packages.
+
+          <p class="note">
+            <strong>Note:</strong> The <a href=
+            "{@docRoot}training/articles/keystore.html">Android keystore</a> provider no
+            longer supports <a href=
+            "{@docRoot}about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
+            DSA keys on Android 6.0</a> (API level 23) and higher.
+          </p>
+
+        </li>
+      </ul>
+    </dd>
+
+    <dt>Fixed issues:</dt>
+    <dd>
+      <ul>
+        <li>Fixed an issue that caused duplicate AAR dependencies in both
+        the test and main build configurations.
+        </li>
+      </ul>
+    </dd>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.5.0</a> <em>(November 2015)</em>
   </p>
 
@@ -546,9 +753,6 @@
   </div>
 </div>
 
-
-
-
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
@@ -577,47 +781,4 @@
       </ul>
     </dd>
   </div>
-</div>
-
-
-
-
-<h2>Updating the Android Plugin for Gradle Version</h2>
-<p>The Android Plugin for Gradle version is specified in the
-<strong>File &gt; Project Structure &gt; Project</strong> menu and the project-level
-<code>build.gradle</code> file. The plugin version applies to all modules built in that
-Android Studio project. This example sets the Android Plugin for Gradle to version 1.1.0 from the <code>build.gradle</code> file:
-<pre>
-...
-     dependencies {
-         classpath 'com.android.tools.build:gradle:1.1.0'
-     }
-...
-</pre>
-
-
-<p class="caution"><strong>Caution:</strong> You should not use dynamic dependencies (+) in
-version numbers. Using this feature can cause unexpected version updates and difficulty
-resolving version differences. </p>
-
-<p>If you're building with Gradle but not using Android Studio, the build process downloads the
-latest Android Plugin for Gradle when it runs. </p>
-
-
-
-<h2>Updating the Gradle Version </h2>
-
-<p>Android Studio requires Gradle version 2.2.1 or later. To view and
-update the Gradle version, edit the Gradle distribution reference in the
-<code>gradle/wrapper/gradle-wrapper.properties</code> file. This example sets the
-Gradle version to 2.2.1.</p>
-
-<pre>
-...
-distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip
-...
-</pre>
-
-<p>For more details about the supported Android Plugin for Gradle properties and syntax, click
-the link to the
-<a href="{@docRoot}tools/building/plugin-for-gradle.html">Plugin Language Reference</a>.</p>
\ No newline at end of file
+</div>
\ No newline at end of file
diff --git a/docs/html/tools/revisions/studio.jd b/docs/html/tools/revisions/studio.jd
index a65c164..b65531f 100755
--- a/docs/html/tools/revisions/studio.jd
+++ b/docs/html/tools/revisions/studio.jd
@@ -19,11 +19,21 @@
 everything you need to begin developing Android apps:</p>
 
 <ul>
-<li>IntelliJ IDE + Android Studio plugin</li>
-<li>Android SDK Tools</li>
-<li>Android Platform-tools</li>
-<li>A version of the Android platform</li>
-<li>A version of the Android system image for the emulator</li>
+  <li>IntelliJ IDE + Android Studio plugin
+  </li>
+
+  <li>Android SDK Tools
+  </li>
+
+  <li>Android Platform-tools
+  </li>
+
+  <li>A version of the Android platform
+  </li>
+
+  <li>Android Emulator with an Android system image including Google Play
+  Services
+  </li>
 </ul>
 
 <p>For an introduction to Android Studio, read the
@@ -39,9 +49,209 @@
 <p>The sections below provide notes about successive releases of
 Android Studio, as denoted by revision number. </p>
 
-<div class="toggle-content opened">
+<div class="toggle-content open">
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+      alt=""/>Android Studio v2.0.0</a> <em>(April 2016)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <p class="note">
+      <strong>Note:</strong> If you are developing for the N Developer Preview, you
+      should use Android Studio 2.1 Preview. Android Studio 2.0 does not support
+      all the features required to target the N Preview. To learn more, read about
+      how to properly <a href="{@docRoot}preview/setup-sdk.html">set up your
+      developer environment</a> for the N Preview.
+    </p>
+
+    <p>
+      <strong>Instant Run</strong>:
+    </p>
+
+    <ul>
+      <li>Android Studio now deploys clean builds faster than ever before.
+      Additionally, pushing incremental code changes to the emulator or a physical
+      device is now almost instantaneous. Review your updates without redeploying a
+      new debug build or, in many cases, without restarting the app.
+      </li>
+
+      <li>Instant Run supports pushing the following changes to a running app:
+        <ul>
+          <li>Changes to the implementation of an existing instance method or
+          static method
+          </li>
+
+          <li>Changes to an existing app resource
+          </li>
+
+          <li>Changes to structural code, such as a method signature or a static
+          field (requires a target device running API level 21 or higher).
+          </li>
+        </ul>
+      </li>
+
+      <li>Read the documentation to learn more <a href=
+      "{@docRoot}tools/building/building-studio.html#instant-run">about Instant
+      Run</a>.
+        <p class="note">
+          <strong>Note:</strong> Instant Run is supported only when you deploy the
+          debug build variant, use <a href=
+          "{@docRoot}tools/revisions/gradle-plugin.html#revisions">Android Plugin for
+          Gradle version 2.0.0</a> or higher, and configure your app's module-level
+          <code>build.gradle</code> file for <code>minSdkVersion 15</code> or higher.
+          For the best performance, configure your app for <code>minSdkVersion
+          21</code> or higher.
+        </p>
+      </li>
+    </ul>
+
+<p><strong>New additions to Lint:</strong></p>
+  <ul>
+    <li>Inspection of {@code switch} statements using {@link
+    android.support.annotation.IntDef @IntDef} annotated integers to make sure
+    all constants are handled. To quickly add any missing statements, use the the
+    intention action drop-down menu and select <b>Add Missing @IntDef
+    Constants</b>.
+    </li>
+
+    <li>Flags for incorrect attempts to use string interpolation to insert
+    version numbers in the {@code build.gradle} file.
+    </li>
+
+    <li>Flags for anonymous classes that extend the {@link android.app.Fragment
+    Fragment} class.
+    </li>
+
+    <li>Flags for native code in unsafe locations, such as the {@code res/} and {@code
+    asset/} folders. This flag encourages storing native code in the {@code libs/}
+    folder, which is then securely packaged into the application’s {@code
+    data/app-lib/} folder at install time. <a class="external-link" href=
+    "https://android-review.googlesource.com/#/c/169950/">AOSP: #169950</a>
+    </li>
+
+    <li>Flags for unsafe calls to {@link java.lang.Runtime#load(java.lang.String)
+    Runtime.load()} and {@link java.lang.System#load(java.lang.String)
+    System.load()} calls. <a class="external-link" href=
+    "https://android-review.googlesource.com/#/c/179980/">AOSP: #179980</a>
+    </li>
+
+    <li>Find and remove any unused resources by selecting <b>Refactor &gt; Remove
+    Unused Resources</b> from the menu bar. Unused resource detection now
+    supports resources only referenced by unused resources, references in raw
+    files such as {@code .html} image references, and {@code tools:keep} and
+    {@code tools:discard} attributes used by the Gradle resource shrinker, while
+    considering inactive source sets (such as resources used in other build
+    flavors) and properly handling static field imports.
+    </li>
+
+    <li>Checks that implicit API references are supported on all platforms
+    targeted by {@code minSdkVersion}.
+    </li>
+
+    <li>Flags improper usage of {@link android.support.v7.widget.RecyclerView}
+    and {@link android.os.Parcelable}.
+    </li>
+
+    <li>{@link android.support.annotation.IntDef @IntDef}, {@link
+    android.support.annotation.IntRange @IntRange}, and {@link
+    android.support.annotation.Size @Size} inspections are now also checked for
+    {@code int} arrays and varargs.
+    </li>
+  </ul>
+
+<p><strong>Additional Improvements</strong>:</p>
+    <ul>
+      <li>Optimized for Android Emulator 2.0, which is faster than ever before,
+      supports a wider range of virtual devices, and features a drastically
+      improved UI. To learn more about the new emulator, read the <a href=
+      "{@docRoot}tools/sdk/tools-notes.html#notes">SDK Tools release notes</a>.
+      </li>
+
+      <li>Improvements to the <a href=
+      "{@docRoot}tools/devices/managing-avds.html">Android Virtual Device
+      Manager</a>:
+        <ul>
+          <li>System images are now categorized under the following tabs:
+          <em>Recommended</em>, <em>x86</em>, and <em>Other</em>.
+          </li>
+
+          <li>Under advanced settings, you can enable multi-core support and
+          specify the number of cores the emulator can use.
+          </li>
+
+          <li>Under advanced settings, you can determine how graphics are rendered
+          on the emulator by selecting one of the following options:
+            <ul>
+              <li>
+                <strong>Hardware:</strong> use you computer's graphics card for
+                faster rendering.
+              </li>
+
+              <li>
+                <strong>Software:</strong> use software-based rendering.
+              </li>
+
+              <li>
+                <strong>Auto:</strong> let the emulator decide the best option. This
+                is the default setting.
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </li>
+
+      <li>Improved AAPT packaging times by specifying deploy target before the app
+      is built. This allows Android Studio to efficiently package only the
+      resources required by the specified device.
+      </li>
+
+      <li>Added Cloud Test Lab integration to provide on-demand app testing with
+      the convenience and scalability of a cloud service. Learn more about how you
+      can <a href="{@docRoot}training/testing/start/index.html#run-ctl">use Cloud
+      Test Lab with Android Studio</a>.
+      </li>
+
+      <li>Added a preview of the new <a class="external-link" href=
+      "//tools.android.com/tech-docs/gpu-profiler">GPU Debugger</a>. For graphics
+      intensive applications, you can now visually step through your OpenGL ES code
+      to optimize your app or game.
+      </li>
+
+      <li>Added support for Google App Indexing integration and testing. Add deep
+      links, app indexing, and search functionality to your apps to help drive more
+      traffic to your app, discover which app content is used most, and attract new
+      users. Test and validate your URL links in your app all within Android
+      Studio. Learn more about implementing and testing <a href=
+      "{@docRoot}tools/help/app-link-indexing.html">Deep Link and App Indexing
+      APIs</a>.
+      </li>
+
+      <li>Upgrades from the latest IntelliJ 15 release, including improved code
+      analysis and performance. See <a class="external-link" href=
+      "https://www.jetbrains.com/idea/whatsnew">What's New in IntelliJ</a> for a
+      complete description of the new features and enhancements.
+      </li>
+
+      <li>XML editor auto-complete now adds quotations marks when completing
+      attributes. To check if this option is enabled, open the <b>Setting</b> or
+      <b>Preferences</b> dialogue, navigate to <b>Editor &gt; General &gt; Smart
+      Keys</b>, and check the box next to <b>Add quotes for attribute value on
+      attribute completion</b>. <a class="external-link" href=
+      "//b.android.com/195113">Issue: 195113</a>
+      </li>
+
+      <li>The XML editor now supports code completion for <a href=
+      "{@docRoot}tools/data-binding/guide.html#layout_details">data binding</a>
+      expressions.
+      </li>
+    </ul>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.5.1</a> <em>(December 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index 73afa3e..f72d3f3 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -18,28 +18,108 @@
 the SDK Tools, as denoted by revision number. To determine what revision of the SDK
 Tools you are using, refer to the "Installed Packages" listing in the Android SDK Manager. </p>
 
-<p>For a summary of all known issues in SDK Tools, see <a
-href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</p>
+<p>
+  For a summary of all known issues in SDK Tools, visit <a class=
+  "external-link" href="http://tools.android.com/knownissues">the Android Tools
+  Project Site</a>.
+</p>
 
 <div class="toggle-content opened">
-  <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
-      alt=""/>SDK Platform-tools, Revision 23.1.0</a> <em>(December 2015)</em>
+  <p>
+    <a href="#" onclick="return toggleContent(this)"><img src=
+    "{@docRoot}assets/images/styles/disclosure_up.png" class=
+    "toggle-content-img" alt="">SDK Tools, Revision 25.0.0</a>
+    <em>(April 2016)</em>
   </p>
 
   <div class="toggle-content-toggleme">
-
     <dl>
-        <dt>General Notes:</dt>
-    <dd>
-      <ul>
-        <li>Changed Linux requirements for Android SDK Platform-tools revision 23.1.0 and later:
-          it now requires 64-bit Linux.</li>
-      </ul>
-    </dd>
+      <dt>
+        <strong>Android Emulator 2.0</strong>:
+      </dt>
 
+      <dd>
+        <ul>
+          <li>Performance improvements:
+          </li>
+            <ul>
+              <li>Emulator now uses CPU acceleration on x86 emulator system images by
+              default.
+              </li>
 
+              <li>Added <a href="{@docRoot}training/articles/smp.html">SMP</a> support
+              to take advantage of host multi-core architecture when emulating Android
+              6.0 (API level 23) or higher, resulting in much better performance and
+              speed than the physical counterpart. Also with SMP support, you can test
+              apps that specifically target multi-core Android devices.
+              </li>
 
+              <li>Improved data and APK push-pull protocol between the the <a href=
+              "{@docRoot}tools/help/adb.html">Android Debug Bridge</a> and devices
+              running Android 5.0 (API level 21) or higher. See speed improvements up
+              to five times faster than using a physical device.
+              </li>
+            </ul>
+
+          <li>Extended UI controls and a floating toolbar provide easy access to features
+          previously available only through the command line, such as taking screen
+          captures, adjusting the battery level, rotating the screen, and managing
+          virtual calls.
+          </li>
+
+          <li>Upload KML and GPX files to play back a set of custom location points.
+          </li>
+
+          <li>Dynamically resize the emulator by dragging a corner or zoom into the
+          emulator window.
+          </li>
+
+          <li>Install APKs or add media files to the emulator’s internal SD card by
+          dragging and dropping files into the emulator window.
+          </li>
+
+          <li>Simulate multi-touch input. While interacting with the emulator screen,
+          enter multi-touch mode by holding down the <strong>Ctrl</strong> key on
+          Windown/Linux, or <strong>Command</strong> key on Mac OSX.
+          </li>
+
+          <li>The Android Emulator works best with Android Studio 2.0. To find out more
+          about what's included in the newest version of the official Android IDE,
+          <a href="{@docRoot}tools/revisions/studio.html#Revisions">read the release
+          notes</a>.
+          </li>
+
+          <li>Read the documentation to find out more about <a href=
+          "{@docRoot}tools/devices/emulator.html">using the Android Emulator</a>.
+          </li>
+        </ul>
+      </dd>
+    </dl>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p>
+    <a href="#" onclick="return toggleContent(this)"><img src=
+    "{@docRoot}assets/images/styles/disclosure_down.png" class=
+    "toggle-content-img" alt="">SDK Platform-tools, Revision 23.1.0</a>
+    <em>(December 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>
+        General Notes:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Changed Linux requirements for Android SDK Platform-tools
+          revision 23.1.0 and later: it now requires 64-bit Linux.
+          </li>
+        </ul>
+      </dd>
+    </dl>
   </div>
 </div>
 
diff --git a/docs/html/tools/studio/code-tools.jd b/docs/html/tools/studio/code-tools.jd
index 4033bfc..aeae77d 100644
--- a/docs/html/tools/studio/code-tools.jd
+++ b/docs/html/tools/studio/code-tools.jd
@@ -17,10 +17,12 @@
       by allowing you to more clearly define method parameter requirements.
     </dd>
 
-  <dt><a href="{@docRoot}tools/help/app-link-indexing.html">Deep Link and App Indexing</a></dt>
-    <dd>These features help you add deep links, app indexing, and search functionality to your
-      apps. These features can make it easier to find content in an installed app, drive more
-      traffic to your app, discover which app content users view the most, and attract new users.
+  <dt><a href="{@docRoot}tools/help/app-link-indexing.html">URL and App Indexing
+  Support</a></dt>
+    <dd>Android Studio helps you add support for URLs, app indexing, and search
+    functionality to your apps. These features can help to drive more traffic
+    to your app, discover which app content is used most, make it easier for
+    users to find content in an installed app, and attract new users.
     </dd>
 
 </dl>
diff --git a/docs/html/tools/studio/index.jd b/docs/html/tools/studio/index.jd
index 146c34f..b3ed82d 100644
--- a/docs/html/tools/studio/index.jd
+++ b/docs/html/tools/studio/index.jd
@@ -1,6 +1,6 @@
 page.title=Android Studio Overview
 page.image=images/cards/card-android-studio-overview_16x9_2x.jpg
-page.metaDescription=Learn about the official IDE for Android.
+page.metaDescription=The basics of working with Android Studio, from projects to build and performance.
 page.tags=studio,sdk,tools,firstapp
 @jd:body
 
diff --git a/docs/html/tools/studio/studio-features.jd b/docs/html/tools/studio/studio-features.jd
index 0894a25..080a124 100644
--- a/docs/html/tools/studio/studio-features.jd
+++ b/docs/html/tools/studio/studio-features.jd
@@ -1,7 +1,10 @@
-page.title=Features
-page.metaDescription=Learn about the Android Studio features.
-page.tags="studio", "android studio", "sdk"
+page.title=Android Studio Features
 page.image=images/cards/card-studio-modules_crop_2x.png
+page.metaDescription=A quick look at Android Studio features that make your work faster.
+page.tags=studio, tools, sdk
+meta.tags="studio"
+
+
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/tools/support-library/index.jd b/docs/html/tools/support-library/index.jd
index 0e3d94c..a9390b0 100644
--- a/docs/html/tools/support-library/index.jd
+++ b/docs/html/tools/support-library/index.jd
@@ -36,8 +36,8 @@
 
 <p>Including the Support Libraries in your Android project is considered a best practice for
   application developers, depending on the range of platform versions your app is targeting
-  and the APIs that it uses. Using the features the libraries provide can help you improve the look of your
-  application, increase performance and broaden the reach of your application to more users.
+  and the APIs that it uses. Using the features the libraries provide can help you improve the look
+  of your application, increase performance and broaden the reach of your application to more users.
   If you use the Android
   <a href="{@docRoot}tools/projects/templates.html">code template</a> tools, you will notice that
   all the Android application templates include one or more of the Support Libraries by default.</p>
@@ -59,9 +59,225 @@
 <p>This section provides details about the Support Library package releases.</p>
 
 <div class="toggle-content opened">
-  <p id="rev23-2-1">
+  <p id="rev23-3-0">
     <a href="#" onclick="return toggleContent(this)"><img src=
     "{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+    alt="">Android Support Library, revision 23.3.0</a> <em>(April
+    2016)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v4">v4 Support
+        Library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Added <code>AppLaunchChecker</code> to help track how your app
+          has been launched by the user in the past.
+          <code>hasStartedFromLauncher()</code> lets you know if the user has
+          launched your app from the home screen before, or if it has only
+          been started by other means (for example, to view specific web
+          URLs).
+          </li>
+
+          <li>Fixed a memory leak in
+          <code>MediaBrowserServiceCompat.mConnections</code>. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=205220">Issue
+          205220</a>)
+          </li>
+
+          <li>Fixed issue where {@link android.support.v4.view.ViewPager}
+          does not account for page margins when flipping page. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=203816">Issue
+          203816</a>)
+          </li>
+          <li>{@link android.support.v4.app.Fragment#onRequestPermissionsResult
+            Fragment.onRequestPermissionsResult()} is now delivered to child
+            fragments.
+          </li>
+        </ul>
+      </dd>
+
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v7-appcompat">v7
+        appcompat library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed an issue in {@link
+          android.support.v7.widget.AppCompatSpinner} that could cause
+          multiple popups to appear. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=205052">Issue
+          205052</a>)
+          </li>
+
+          <li>Fixed an issue with how borderless buttons were colored.
+          (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202967">Issue
+          202967</a>)
+          </li>
+
+          <li>Fixed a compatibility issue between {@link
+          android.support.v7.app.AppCompatDialogFragment } and {@link
+          android.support.v7.app.AlertDialog}. (<a class="external-link"
+            href="https://code.google.com/p/android/issues/detail?id=204805">Issue
+            204805</a>)
+          </li>
+
+          <li>Reverted changes to <code>TintResources</code> that were causing
+            memory and configuration issues.  (<a class="external-link"
+            href="https://code.google.com/p/android/issues/detail?id=205236">Issue
+            205236</a>)</li>
+        </ul>
+      </dd>
+
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v7-mediarouter">v7
+        mediarouter library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed {@link android.support.v7.app.MediaRouteControllerDialog}
+          volume slider’s behavior. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202299">Issue
+          202299</a>)
+          </li>
+        </ul>
+      </dd>
+
+
+      <dt>
+        Changes for <a href="features.html#v7-preference">v7 Preference</a>
+        library:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed issue where {@link
+          android.support.v7.preference.PreferenceFragmentCompat} would crash
+          if <code>dividerHeight</code> is specified. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=204778">Issue
+          204778</a>)
+          </li>
+        </ul>
+      </dd>
+
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v7-recyclerview">v7
+        recyclerview library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed a bug where {@link
+          android.support.v7.widget.RecyclerView} would not invoke scroll
+          callbacks if the range of visible items shrank. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=200987">Issue
+          200987</a>)
+          </li>
+
+          <li>Fixed a bug where {@link
+          android.support.v7.widget.RecyclerView} would freeze if it was in
+          linear layout, was weighted, and contained images. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=203276">Issue
+          203276</a>)
+          </li>
+
+          <li>Fixed a crash in {@link
+          android.support.v7.widget.OrientationHelper#getStartAfterPadding
+          OrientationHelper.getStartAfterPadding()}. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=180521">Issue
+          180521</a>)
+          </li>
+
+          <li>Fixed a crash with usages of
+          <code>android:nestedScrollingEnabled</code>. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=197932">Issue
+          197932</a>)
+          </li>
+        </ul>
+      </dd>
+
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#design">Design Support
+        Library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed a bug where a hidden bottom sheet would handle touch
+          events. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=203654">Issue
+          203654</a>)
+          </li>
+
+          <li>Fixed a layout issue with <code>BottomSheetBehavior</code> when
+          <code>fitsSystemWindows</code> is true. (<a class="external-link"
+          href=
+          "https://code.google.com/p/android/issues/detail?id=203057">Issue
+          203057</a>)
+          </li>
+
+          <li>Fixed an accessibility issue with {@link
+          android.support.design.widget.Snackbar}. (<a class="external-link"
+          href=
+          "https://code.google.com/p/android/issues/detail?id=182145">Issue
+          182145</a>)
+          </li>
+
+          <li>Fixed a crash on {@link android.support.design.widget.Snackbar}
+          swipe. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=203924">Issue
+          203924</a>)
+          </li>
+
+          <li>Fixed a bug in {@link
+          android.support.design.widget.AppBarLayout} with
+          <code>enterAlways</code>. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=203661">Issue
+          203661</a>)
+          </li>
+
+          <li>Fixed a bug where {@link
+          android.support.design.widget.TextInputLayout} unnecessarily clears
+          {@link android.widget.EditText} object's background color filter.
+          (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=203357">Issue
+          203357</a>)
+          </li>
+        </ul>
+      </dd>
+
+    </dl>
+  </div>
+</div>
+<!-- end of collapsible section: 23.3.0 -->
+
+<div class="toggle-content closed">
+  <p id="rev23-2-1">
+    <a href="#" onclick="return toggleContent(this)"><img src=
+    "{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
     alt="">Android Support Library, revision 23.2.1</a> <em>(March
     2016)</em>
   </p>
@@ -361,7 +577,7 @@
     </dl>
   </div>
 </div>
-<!-- end of collapsible section -->
+<!-- end of collapsible section: 23.2.1 -->
 
 <div class="toggle-content closed">
   <p id="rev23-2-0">
@@ -718,7 +934,7 @@
     </dl>
   </div>
 </div>
-<!-- end of collapsible section -->
+<!-- end of collapsible section: 23.2.0 -->
 
 <div class="toggle-content closed">
   <p id="rev23-1-1"><a href="#" onclick="return toggleContent(this)">
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index 9f575d4..baa51bc 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -5,10 +5,7 @@
 ?>sdk/index.html"><span class="en">Download</span></a></div>
     <ul>
       <li><a href="<?cs var:toroot ?>sdk/installing/index.html">
-          <span class="en">Installing the SDK</span></a></li>
-
-      <li><a href="<?cs var:toroot ?>sdk/installing/adding-packages.html">
-          <span class="en">Adding SDK Packages</span></a></li>
+          <span class="en">Install Android Studio</span></a></li>
     </ul>
   </li>
 
@@ -100,7 +97,7 @@
             <li><a href="<?cs var:toroot ?>tools/debugging/annotations.html">
               <span class="en">Improving Code Inspection with Annotations</span></a></li>
             <li><a href="<?cs var:toroot ?>tools/help/app-link-indexing.html">
-              <span class="en">Deep Link and App Indexing API Support</span></a></li>
+              <span class="en">Supporting URLs and App Indexing in Android Studio</span></a></li>
           </ul>
       </li>
 
@@ -126,6 +123,16 @@
 
       <li class="nav-section">
         <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/devices/emulator.html">
+            <span class="en">Android Emulator</span></a></div>
+         <ul>
+           <li><a href="<?cs var:toroot ?>tools/help/emulator.html">Android Emulator
+           Command-Line Features</a></li>
+         </ul>
+       </li>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
           <a href="<?cs var:toroot ?>tools/debugging/debugging-studio.html">
             <span class="en">Debugging Tools</span></a></div>
           <ul>
@@ -222,14 +229,7 @@
        <li><a href="<?cs var:toroot ?>tools/help/proguard.html" zh-cn-lang="ProGuard">ProGuard</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/gltracer.html">Tracer for OpenGL ES</a></li>
 
-       <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/devices/emulator.html">
-            <span class="en">Virtual Device Emulator</span></a></div>
-         <ul>
-           <li><a href="<?cs var:toroot ?>tools/help/emulator.html">Command Reference</a></li>
-         </ul>
-       </li>
+
        <li><a href="<?cs var:toroot ?>tools/help/zipalign.html">zipalign</a></li>
 
     </ul>
@@ -254,7 +254,7 @@
       <li><a href="<?cs var:toroot ?>tools/building/manifest-merge.html">
         <span class="en">Manifest Merging</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/building/multidex.html">
-        <span class="en">Apps Over 65K Methods</span></a></li>
+        <span class="en">Apps Over 64K Methods</span></a></li>
       </ul>
   </li><!-- end of build system -->
 
diff --git a/docs/html/training/app-indexing/index.jd b/docs/html/training/app-indexing/index.jd
index a1a47e9..60f40b4 100644
--- a/docs/html/training/app-indexing/index.jd
+++ b/docs/html/training/app-indexing/index.jd
@@ -22,7 +22,7 @@
 target="_blank">App Indexing for Google Search</a></li>
 <li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
 Filters</a></li>
-<li><a href="{@docRoot}tools/help/app-link-indexing.html">Deep Link and App Indexing API Support in Android Studio</a></li>
+<li><a href="{@docRoot}tools/help/app-link-indexing.html">Supporting URLs and App Indexing in Android Studio</a></li>
 </ul>
 </div>
 </div>
diff --git a/docs/html/training/app-links/index.jd b/docs/html/training/app-links/index.jd
index 27b6480..80309ee1 100644
--- a/docs/html/training/app-links/index.jd
+++ b/docs/html/training/app-links/index.jd
@@ -16,7 +16,7 @@
     </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}tools/help/app-link-indexing.html">Deep Link and App Indexing API Support in Android Studio</a></li>
+    <li><a href="{@docRoot}tools/help/app-link-indexing.html">Supporting URLs and App Indexing in Android Studio</a></li>
   </ol>
   </div>
 </div>
diff --git a/docs/html/training/monitoring-device-state/doze-standby.jd b/docs/html/training/monitoring-device-state/doze-standby.jd
index 11e81c1..9250288 100644
--- a/docs/html/training/monitoring-device-state/doze-standby.jd
+++ b/docs/html/training/monitoring-device-state/doze-standby.jd
@@ -205,13 +205,14 @@
   you can set alarms that will fire even if the device is in Doze.
 </p>
 
-<p class="note"><strong>Note:</strong> Neither
-{@link
+<p class="note">
+  <strong>Note:</strong> Neither {@link
   android.app.AlarmManager#setAndAllowWhileIdle(int, long,
   android.app.PendingIntent) setAndAllowWhileIdle()} nor {@link
   android.app.AlarmManager#setExactAndAllowWhileIdle(int, long,
-  android.app.PendingIntent) setExactAndAllowWhileIdle()} can fire alarms more than once per 15
-minutes per app.</p>
+  android.app.PendingIntent) setExactAndAllowWhileIdle()} can fire alarms more
+  than once per 9 minutes, per app.
+</p>
 
 <p>
   The Doze restriction on network access is also likely to affect your app,
diff --git a/docs/html/training/testing/start/index.jd b/docs/html/training/testing/start/index.jd
index a4b4aea..707ba9d 100644
--- a/docs/html/training/testing/start/index.jd
+++ b/docs/html/training/testing/start/index.jd
@@ -6,69 +6,153 @@
 @jd:body
 
 <div id="tb-wrapper">
-<div id="tb">
+  <div id="tb">
 
-<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
-<h2>Dependencies and prerequisites</h2>
-<ul>
-  <li><a href="{@docRoot}tools/studio/index.html">Android Studio (latest version)</a>.</li>
-</ul>
+    <h2>
+      Dependencies and prerequisites
+    </h2>
 
-<h2>This lesson teaches you to</h2>
-<ol>
-<li><a href="#setup">Set Up Your Testing Environment</a></li>
-<li><a href="#build">Build and Run Your Tests</a></li>
-</ol>
+    <ul>
+      <li>
+        <a href="{@docRoot}tools/studio/index.html">Android Studio 2.0</a>, or
+        later.
+      </li>
 
-<h2>You Should Also Read</h2>
-<ul>
-<li><a href="{@docRoot}tools/testing/testing_android.html">Testing Concepts</a></li>
-<li><a href="https://github.com/googlesamples/android-testing"
-  class="external-link">Android Testing Samples</a></li>
-<li><a href="{@docRoot}about/dashboards/index.html">Android Dashboards</a></li>
-</ul>
+      <li>The Android Support Repository (available from the <a href=
+      "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>)
+      </li>
+    </ul>
 
-</div>
+    <h2>
+      This lesson teaches you to
+    </h2>
+
+      <ol>
+        <li>
+          <a href="#config-local-tests">Configure Your Project for Local Unit
+          Tests</a>
+        </li>
+
+        <li>
+          <a href="#config-instrumented-tests">Configure Your Project for
+          Instrumented Tests</a>
+        </li>
+
+        <li>
+          <a href="#build">Build and Run Your Tests</a>
+          <ol>
+            <li>
+              <a href="#run-local-tests">Run Local Unit Tests</a>
+            </li>
+
+            <li>
+              <a href="#run-instrumented-tests">Run Instrumented Tests</a>
+            </li>
+
+            <li>
+              <a href="#run-ctl">Run Instrumented Tests with Cloud Test Lab</a>
+            </li>
+          </ol>
+        </li>
+      </ol>
+
+    <h2>
+      See also
+    </h2>
+
+    <ul>
+      <li>
+        <a href="{@docRoot}tools/testing/testing_android.html">Testing
+        Concepts</a>
+      </li>
+
+      <li>
+        <a href="https://github.com/googlesamples/android-testing" class=
+        "external-link">Android Testing Samples</a>
+      </li>
+
+      <li>
+        <a href="https://developers.google.com/cloud-test-lab/">Cloud Test
+        Lab</a>
+      </li>
+    </ul>
+  </div>
 </div>
 
-<p>You should be writing and running tests as part of your Android app development cycle.
-Well-written tests can help you catch bugs early in development and give you confidence in your
-code.</p>
+<p>
+  Writing and running tests are important parts of the Android app development
+  cycle. Well-written tests can help you catch bugs early in development and
+  give you confidence in your code. Using Android Studio, you can run local
+  unit tests or instrumented tests on a variety of physical or virtual Android
+  devices. You can then analyze the results and make changes to your code
+  without leaving the development environment.
+</p>
 
-<p>To verify specific behavior in your app, and to check for consistency across different Android
-devices, you can write a <a href="//en.wikipedia.org/wiki/Test_case"
-class="external-link">test case</a>. This lesson teaches you how to build a test case using the
-JUnit 4 framework and the testing APIs and tools provided by Google, and how to run your
-tests.</p>
+<p>
+  <em>Local unit tests</em> are tests that run on your local machine, without
+  needing access to the Android framework or an Android device. To learn how to
+  develop local units tests, see <a href=
+  "{@docRoot}training/testing/unit-testing/local-unit-tests.html">Building
+  Local Unit Tests</a>.
+</p>
 
-<h2 id="setup">Set Up Your Testing Environment</h2>
+<p>
+  <em>Instrumented tests</em> are tests that run on an Android device or
+  emulator. These tests have access to {@link android.app.Instrumentation}
+  information, such as the {@link android.content.Context} for the app under
+  test. Instrumented tests can be used for unit, user interface (UI), or app
+  component integration testing. To learn how to develop instrumented tests for
+  your specific needs, see these additional topics:
+</p>
 
-<p>Before you start writing and running your tests, you must set up your test
-development environment. Android Studio provides an integrated development environment for you to
-create, build, and run Android app test cases from a graphical user interface (GUI).</p>
-
-<p>You must first download the prerequisite Android development tools before proceeding:
 <ul>
-<li><a href="{@docRoot}sdk/index.html">Android Studio</a> (latest version).</li>
-<li>The latest Android Support Repository using the
-  <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>. </li>
+  <li>
+    <a href=
+    "{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html">Building
+    Instrumented Unit Tests</a> - Build more complex unit tests that have
+    Android dependencies which cannot be easily filled by using mock objects.
+  </li>
+
+  <li>
+    <a href="{@docRoot}training/testing/ui-testing/index.html">Automating User
+    Interface Tests</a> - Create tests to verify that the user interface
+    behaves correctly for user interactions within a single app or for
+    interactions across multiple apps.
+  </li>
+
+  <li>
+    <a href="{@docRoot}training/testing/integration-testing/index.html">Testing
+    App Component Integrations</a> - Verify the behavior of components that
+    users do not directly interact with, such as a <a href=
+    "{@docRoot}guide/components/services.html">Service</a> or a <a href=
+    "guide/topics/providers/content-providers.html">Content Provider</a>.
+  </li>
 </ul>
 
-<p>Based on the type of test you want to create, configure the test code source location and the
-  project dependencies in Android Studio as described in the following sections.</p>
+<p>
+  This lesson teaches you how to build and run your tests using using Android
+  Studio. If you are not using Android Studio, you can learn how to
+  <a href="{@docRoot}tools/testing/testing_otheride.html">run your tests from
+  the command-line</a>.
+</p>
 
-<h3 id="config-local-tests">Configure Your Project for Local Unit Tests</h3>
-<p><em>Local unit tests</em> are tests that run on your local machine, without needing access to the
-Android framework or an Android device. To learn how to develop local units tests, see
-<a href="{@docRoot}training/testing/unit-testing/local-unit-tests.html">
-Building Local Unit Tests</a>.</p>
-<p>In your Android Studio project, you must store the source files for local unit tests under a
-specific source directory ({@code src/test/java}). This feature improves your project organization
-by letting you group your unit tests together into a single source set.</p>
-<p>As with production code, you can create local unit tests for a
-<a href="http://developer.android.com/tools/building/configuring-gradle.html#workBuildVariants"
-class="external-link">specific flavor or build type</a>. Keep your unit tests in a test
-source tree location that corresponds to your production source tree, such as:</p>
+<h3 id="config-local-tests">
+  Configure Your Project for Local Unit Tests
+</h3>
+
+<p>
+  In your Android Studio project, you must store the source files for local
+  unit tests under a specific source directory ({@code src/test/java}). This
+  improves project organization by grouping your unit tests together into a
+  single source set.
+</p>
+
+<p>
+  As with production code, you can create local unit tests for a <a href=
+  "{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">specific
+  flavor or build type</a>. Keep your unit tests in a test source tree location
+  that corresponds to your production source tree, such as:
+</p>
 
 <table>
 <tr>
@@ -89,15 +173,21 @@
 </tr>
 </table>
 
-<p>You'll need to configure the testing dependencies for your project to use the
-  standard APIs provided by the JUnit 4 framework. To simplify your local unit test development,
-  we recommend that you include the <a href="https://github.com/mockito/mockito"
-  class="external-link">Mockito</a> library if your test needs to interact with Android
-  dependencies. To learn more about using mock objects in your local unit tests, see
-<a href="{@docRoot}training/testing/unit-testing/local-unit-tests.html#mocking-dependencies">
-  Mocking Android dependencies</a>.</p>
-<p>In the {@code build.gradle} file of your Android app module, specify your dependencies like
-this:</p>
+<p>
+  You'll need to configure the testing dependencies for your project to use the
+  standard APIs provided by the JUnit 4 framework. If your test needs to
+  interact with Android dependencies, include the <a href=
+  "https://github.com/mockito/mockito" class="external-link">Mockito</a>
+  library to simplify your local unit tests. To learn more about using mock
+  objects in your local unit tests, see <a href=
+  "{@docRoot}training/testing/unit-testing/local-unit-tests.html#mocking-dependencies">
+  Mocking Android dependencies</a>.
+</p>
+
+<p>
+  In your app's top-level {@code build.gradle} file, you need to specify these
+  libraries as dependencies:
+</p>
 
 <pre>
 dependencies {
@@ -108,46 +198,43 @@
 }
 </pre>
 
-<h3 id="config-instrumented-tests">Configure Your Project for Instrumented Tests</h3>
-<p><em>Instrumented tests</em> are tests that run on an Android device or emulator. These tests
-have access to {@link android.app.Instrumentation} information, such as the
-{@link android.content.Context} for the app under test. Instrumented tests can be used for unit,
-user interface (UI), or app component integration testing. To learn how to develop instrumented
-tests for your specific needs, see these additional topics:
-<ul>
-<li><a href="{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html">
-    Building Instrumented Unit Tests</a> - Build more complex unit tests that have Android
-    dependencies which cannot be easily filled by using mock objects.</li>
-<li><a href="{@docRoot}training/testing/ui-testing/index.html">
-    Automating User Interface Tests</a> - Create tests to verify that the user interface behaves
-    correctly for user interactions within a single app or for interactions across multiple apps.</li>
-<li><a href="{@docRoot}training/testing/integration-testing/index.html">
-    Testing App Component Integrations</a> - Verify the behavior of components that users do not
-directly interact with, such as a <a href="{@docRoot}guide/components/services.html">Service</a> or
-a <a href="guide/topics/providers/content-providers.html">Content Provider</a>.</li>
-</ul>
-</p>
+<h3 id="config-instrumented-tests">
+  Configure Your Project for Instrumented Tests
+</h3>
+
 <p>
-In your Android Studio project, you must place the source code for your instrumentated tests under
-a specific directory (<code>src/androidTest/java</code>).
+  In your Android Studio project, you must place the source code for your
+  instrumentated tests under a specific directory
+  (<code>src/androidTest/java</code>).
 </p>
+
 <p>
-Download the Android Testing Support Library, which provides APIs that allow you to quickly build and
-run instrumented test code for your apps. The Testing Support Library includes a JUnit 4 test runner
-(<a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">AndroidJUnitRunner
-</a>) and APIs for functional UI tests
-(<a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a> and
-<a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI Automator</a>). To
-learn how to install the library, see
-<a href="{@docRoot}tools/testing-support-library/index.html#setup">Testing Support Library Setup</a>.
+  <a href="{@docRoot}tools/testing-support-library/index.html#setup">Download
+  the Android Testing Support Library Setup</a>, which provides APIs that allow
+  you to quickly build and run instrumented test code for your apps. The
+  Testing Support Library includes a JUnit 4 test runner (<a href=
+  "{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">AndroidJUnitRunner</a>
+  ) and APIs for functional UI tests (<a href=
+  "{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a>
+  and <a href=
+  "{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI
+  Automator</a>).
 </p>
-<p>You'll need to configure the Android testing dependencies for your project to use the test runner
-and the rules APIs provided by the Testing Support Library. To simplify your test development,
-we also recommend that you include the <a href="https://github.com/hamcrest"
-class="external-link">Hamcrest</a> library, which lets you create more flexible assertions using the
-Hamcrest matcher APIs.</p>
-<p>In the {@code build.gradle} file of your Android app module, specify your dependencies like
-this:</p>
+
+<p>
+  You'll need to configure the Android testing dependencies for your project to
+  use the test runner and the rules APIs provided by the Testing Support
+  Library. To simplify your test development, we also recommend that you
+  include the <a href="https://github.com/hamcrest" class=
+  "external-link">Hamcrest</a> library, which lets you create more flexible
+  assertions using the Hamcrest matcher APIs.
+</p>
+
+<p>
+  In your app's top-level {@code build.gradle} file, you need to specify these
+  libraries as dependencies:
+</p>
+
 <pre>
 dependencies {
     androidTestCompile 'com.android.support:support-annotations:23.0.1'
@@ -162,59 +249,14 @@
 }
 </pre>
 
-<h2 id="build">Build and Run Your Tests</h2>
 
-<p>You can run build and run your tests in a similar way to how you run your Android apps --
-  graphically in Android Studio or from the command-line using the
-<a href="{@docRoot}tools/building/plugin-for-gradle.html">
-Android Plugin for Gradle</a>.</p>
-
-<h3 id="run-local-tests">Run Local Unit Tests</h3>
 <p>
-The Android Plugin for Gradle compiles the local unit test code located in the default directory
-({@code src/test/java}), builds a test app, and executes it locally
-using the default test runner class.
+  To use JUnit 4 test classes, make sure to specify <a href=
+  "{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">{@code
+  AndroidJUnitRunner}</a> as the default test instrumentation runner in your
+  project by including the following setting in your app's module-level {@code build.gradle}
+  file:
 </p>
-<p>
-To run local unit tests in your Gradle project from Android Studio:
-</p>
-<ol>
-<li>In the <strong>Project</strong> window, right click on the project and synchronize your project.
-</li>
-<li>Open the <strong>Build Variants</strong> window by clicking the left-hand tab, then change the
-test artifact to <em>Unit Tests</em>.
-</li>
-<li>In the <strong>Project</strong> window, drill down to your unit test class or method,
-then right-click and run it. To run all tests in the unit test directory, select the directory then
-right-click and press <strong>Run tests</strong>.
-</li>
-</ol>
-
-<p>Android Studio displays the results of the unit test execution in the <strong>Run</strong>
-window.</p>
-
-<p>To run local unit tests in your Gradle project from the command-line, call the {@code test} task
-command.</p>
-
-<pre>
-./gradlew test
-</pre>
-
-<p>If there are failing tests, the command will display links to HTML reports (one per build
-variant). You can find the generated HTML test result reports in the
-{@code &lt;path_to_your_project&gt;/app/build/reports/tests/} directory, and the corresponding XML
-files in the {@code &lt;path_to_your_project&gt;/app/build/test-results/} directory.</p>
-
-<h3 id="run-instrumented-tests">Run Instrumented Tests</h3>
-<p>
-The Android Plugin for Gradle compiles the instrumented test code located in the default directory
-({@code src/androidTest/java}), builds a test APK and production APK, installs both APKs on the
-connected device or emulator, and executes the tests.</p>
-
-<p>Make sure to specify
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> as the default test instrumentation runner in your project. To do
-this, add the following setting in your {@code build.gradle} file:</p>
 
 <pre>
 android {
@@ -224,29 +266,298 @@
 }
 </pre>
 
-<p>To run your instrumented tests in Android Studio:</p>
+<h3 id="testartifacts">Work With Test Artifacts</h3>
+<p>Android Studio has two types of test artifacts: Android Instrumentation Tests
+and Unit Tests. Previously, you could work with just one test artifact at a
+time. Now, both test artifacts are enabled.
+The advantage of enabling both test artifacts is that any changes you make to
+the underlying code affect
+them both. For example, if you rename a class that both test artifacts access,
+both will know about the class name refactoring.</p>
+
+<p>The figure shows what your project looks like with both test
+artifacts enabled. Notice the shading of both test artifacts.</p>
+
+<!-- Commenting out for now, but leaving it in case we need to add it back.
+<img src="{@docRoot}images/training/testartifactseparate.png" style="float:left;width:250px;margin-right:20px" /> -->
+<img src="{@docRoot}images/training/testartifactcombined.png" style="float:left;width:250px" />
+<!-- Commenting out for now, but leaving it in case we need to add it back.
+<p>
+By default, both test artifacts are enabled in Android Studio. To enable just
+one, deselect <strong>Enable all test artifacts</strong> in your preferences:
+</p>
+
 <ol>
-<li>Open the <strong>Build Variants</strong> window by clicking the left-hand tab, then set the
-test artifact to <em>Android Instrumentation Tests</em>.
+<li>Select
+<strong>Android Studio</strong> > <strong>Preferences</strong> > <strong>Build,
+Execution, Deployment</strong> > <strong>Build Tools</strong> >
+<strong>Gradle</strong> > <strong>Experimental</strong>.</li>
+<li>Deselect the test artifacts option.</li>
+<li>Click <strong>OK</strong>.</li>
+</ol>
+-->
+
+<h2 id="build">Build and Run Your Tests</h2>
+
+
+<p>
+  Android Studio provides all the tools you need to build, run, and analyze
+  your tests within the development environment. You can also run instrumented
+  tests on multiple device configurations, simultaneously, using <a href=
+  "https://developers.google.com/cloud-test-lab/">Cloud Test Lab</a>
+  integration.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> While running or debugging instrumented tests,
+  Android Studio does not inject the additional methods required for <a href=
+  "{@docRoot}tools/building/building-studio.html#instant-run">Instant Run</a>
+  and turns the feature off.
+</p>
+
+<h3 id="run-local-tests">
+  Run Local Unit Tests
+</h3>
+
+<p>
+  To run your local unit tests:
+</p>
+
+<ol>
+
+  <li>In the <em>Project</em> window, right click on the project and
+  synchronize your project.
+  </li>
+
+  <!--
+<li>If you enabled one test artifact only, open the
+<strong>Build Variants</strong> window by clicking the left-hand tab, then
+change the test artifact to <em>Unit Tests</em>.
 </li>
-<li>In the <strong>Project</strong> window, drill down to your instrumented test class or method,
-  then right-click and run it using the Android Test configuration. To run all tests in the
-instrumented test directory, select the directory then right-click and press
-<strong>Run tests</strong>.
-</li>
+-->
+
+  <li>In the <em>Project</em> window, navigate to your unit test class or
+  method, then right-click it and select <strong>Run</strong> <img src=
+  "{@docRoot}images/tools/as-run.png" alt="" style=
+  "vertical-align:bottom;margin:0;">.
+    <ul>
+      <li>To run all tests in the unit test directory, right-click on the
+      directory and select <strong>Run tests</strong> <img src=
+      "{@docRoot}images/tools/as-run.png" alt="" style=
+      "vertical-align:bottom;margin:0;">.
+      </li>
+    </ul>
+  </li>
+
 </ol>
 
-<p>Android Studio displays the results of the instrumented test execution in the
-<strong>Run</strong> window.</p>
+<p>
+  The Android Plugin for Gradle compiles the local unit test code located in
+  the default directory ({@code src/test/java}), builds a test app, and
+  executes it locally using the default test runner class. Android Studio then
+  displays the results in the <em>Run</em> window.
+</p>
 
-<p>To run your instrumented tests from the command-line via Gradle, call the
-  {@code connectedAndroidTest} (or {@code cAT}) task:</p>
+<h3 id="run-instrumented-tests">
+  Run Instrumented Tests
+</h3>
 
-<pre>
-./gradlew cAT
-</pre>
+<p>
+  To run your instrumented tests:
+</p>
 
-<p>You can find the generated HTML test result reports in the
-{@code &lt;path_to_your_project&gt;/app/build/outputs/reports/androidTests/connected/} directory,
-and the corresponding XML files in the
-{@code &lt;path_to_your_project&gt;/app/build/outputs/androidTest-results/connected/} directory.</p>
\ No newline at end of file
+<ul>
+  <!--
+<li>If you enabled one test artifact only, open the
+<strong>Build Variants</strong> window by clicking the left-hand tab, then set
+the test artifact to <em>Android Instrumentation Tests</em>.
+</li>
+-->
+
+  <li>In the <em>Project</em> window, navigate to your instrumented test class
+  or method, then right-click and run it using the Android Test configuration.
+  To run all tests in the instrumented test directory, right-click the
+  directory and select <strong>Run tests</strong> <img src=
+  "{@docRoot}images/tools/as-run.png" alt="" style=
+  "vertical-align:bottom;margin:0;">.
+  </li>
+</ul>
+
+<p>
+  The <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin
+  for Gradle</a> compiles the instrumented test code located in the default
+  directory ({@code src/androidTest/java}), builds a test APK and production
+  APK, installs both APKs on the connected device or emulator, and runs the
+  tests. Android Studio then displays the results of the instrumented test execution in the
+  <em>Run</em> window.
+</p>
+
+<h3 id="run-ctl">Run Instrumented Tests with Cloud Test Lab</h3>
+
+<p>
+  Using <a href="https://developers.google.com/cloud-test-lab/">Cloud Test
+  Lab</a>, you can simultaneously test your app on many popular Android
+  devices, across multiple languages, screen orientations, and versions of the
+  Android platform. These tests run on actual physical devices in remote Google
+  data centers. You can also <a href=
+  "https://developers.google.com/cloud-test-lab/test-screenshots">configure
+  your instrumented tests to take screenshots</a> while Cloud Test Lab runs its
+  tests. You can <a href=
+  "https://developers.google.com/cloud-test-lab/command-line">deploy tests to
+  Cloud Test Lab from the command line</a>, or from Android Studio's integrated
+  testing tools.
+</p>
+
+<p>
+  Android Studio allows you to connect to your Google Cloud Platform account,
+  configure your tests, deploy them to Cloud Test Lab, and analyze the results
+  all within the development environment. Cloud Test Lab in Android Studio
+  supports the following Android test frameworks: <a href=
+  "{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>,
+  <a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI
+  Automator 2.0</a>, or <a class="external-link" href=
+  "https://github.com/robotiumtech/robotium">Robotium</a>. Test results provide
+  test logs and include the details of any app failures.
+</p>
+
+<p>
+  Before you can start using Cloud Test Lab, you need to:
+</p>
+
+<ol>
+  <li>
+    <a href="https://console.developers.google.com/freetrial">Create a
+    Google Cloud Platform account</a> to use with active billing.
+  </li>
+
+  <li>
+    <a href="https://support.google.com/cloud/answer/6251787">Create a Google
+    Cloud project</a> for your app.
+  </li>
+
+  <li>
+    <a href="https://support.google.com/cloud/answer/6288653">Set up an active
+    billing account</a> and associate it with the project you just created.
+  </li>
+</ol>
+
+
+<h4 id="configure-matrix">
+Configure a test matrix and run a test
+</h4>
+
+<p>
+  Android Studio provides integrated tools that allow you to configure how you
+  want to deploy your tests to Cloud Test Lab. After you have created a Google
+  Cloud project with active billing, you can create a test configuration and
+  run your tests:
+</p>
+
+<ol>
+  <li>Click <strong>Run</strong> &gt; <strong>Edit Configurations</strong> from
+  the main menu.
+  </li>
+
+  <li>Click <strong>Add New Configuration (+)</strong> and select
+  <strong>Android Tests</strong>.
+  </li>
+
+  <li>In the Android Test configuration dialog:
+    <ol type="a">
+      <li>Enter or select the details of your test, such as the test name, module
+      type, test type, and test class.
+      </li>
+
+      <li>From the <em>Target</em> drop-down menu under <em>Deployment Target
+      Options</em>, select <strong>Cloud Test Lab Device Matrix</strong>.
+      </li>
+
+      <li>If you are not logged in, click <strong>Connect to Google Cloud
+      Platform</strong> and allow Android Studio access to your account.
+      </li>
+
+      <li>Next to <em>Cloud Project</em>, click the <img src=
+      "{@docRoot}images/tools/as-wrench.png" alt="wrench and nut" style=
+      "vertical-align:bottom;margin:0;"> button and select your Google Cloud
+      Platform project from the list.
+      </li>
+    </ol>
+  </li>
+
+  <li>Create and configure a test matrix:
+    <ol type="a">
+      <li>Next to the <em>Matrix Configuration</em> drop-down list, click <strong>
+        Open Dialog</strong> <img src="{@docRoot}images/tools/as-launchavdm.png"
+        alt="ellipses button" style="vertical-align:bottom;margin:0;">.
+      </li>
+
+      <li>Click <strong>Add New Configuration (+)</strong>.
+      </li>
+
+      <li>In the <strong>Name</strong> field, enter a name for your new
+      configuration.
+      </li>
+
+      <li>Select the device(s), Android version(s), locale(s) and screen
+      orientation(s) that you want to test your app with. Cloud Test Lab will test
+      your app against every combination of your selections when generating test
+      results.
+      </li>
+
+      <li>Click <strong>OK</strong> to save your configuration.
+      </li>
+    </ol>
+  </li>
+
+  <li>Click <strong>OK</strong> in the <em>Run/Debug Configurations</em> dialog
+  to exit.
+  </li>
+
+  <li>Run your tests by clicking <strong>Run</strong> <img src=
+  "{@docRoot}images/tools/as-run.png" alt="" style=
+  "vertical-align:bottom;margin:0;">.
+  </li>
+</ol>
+
+<img src="{@docRoot}images/training/ctl-config.png" alt="">
+<p class="img-caption">
+  <strong>Figure 1.</strong> Creating a test configuration for Cloud Test
+  Lab.
+</p>
+
+<h4 id="ctl-results">
+  Analyzing test results
+</h4>
+
+<p>
+  When Cloud Test Lab completes running your tests, the <em>Run</em> window will
+  open to show the results, as shown in figure 2. You may need to click
+  <strong>Show Passed</strong> <img src="{@docRoot}images/tools/as-ok.png" alt=
+  "" style="vertical-align:bottom;margin:0;"> to see all your executed tests.
+</p>
+
+<img src="{@docRoot}images/training/ctl-test-results.png" alt="">
+
+<p class="img-caption">
+  <strong>Figure 2.</strong> Viewing the results of instrumented tests using
+  Cloud Test Lab.
+</p>
+
+<p>
+  You can also analyze your tests on the web by following the link displayed at
+  the beginning of the test execution log in the <em>Run</em> window, as shown
+  in figure 3.
+</p>
+
+<img src="{@docRoot}images/training/ctl-exec-log.png" alt="">
+
+<p class="img-caption">
+  <strong>Figure 3.</strong> Click the link to view detailed test results on
+  the web.
+</p>
+
+<p>
+  To learn more about interpreting web results, see <a href=
+  "https://developers.google.com/cloud-test-lab/analyzing-results">Analyzing
+  Cloud Test Lab Web Results</a>.
+</p>
\ No newline at end of file